2013-07-05 62 views
0

我想实现在一个画布元素的Google+功能使用交互式帖子 -从画布

是有可能请求交互式后弹出,而无需使用gapi.interactivepost.render的()?

同样,有没有办法从JS触发gapi.auth.authorize(),并将其视为用户操作? (从直接点击链接/按钮可以看出)。

回答

0

您无法在画布内呈现Google+按钮,但可以在HTML画布上放置div,并可在画布上呈现按钮。例如:

HTML的画布和按钮目标

<p> 
    <div id="canvasPlus" style="position:relative"> 
    <canvas id="canvas" width="800" height="600"></canvas> 
    <div style = "position:absolute; top:20px; left:230px;" id="shareContainer"> 
     <button id="ipost">Share</button> 
    </div> 
    </div> 
</p> 

的JavaScript在画布上绘制按钮

<script type="text/javascript"> 
(function() { 
    var po = document.createElement('script'); 
    po.type = 'text/javascript'; po.async = true; 
    po.src = 'https://plus.google.com/js/client:plusone.js?onload=onPlusOneLoaded'; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(po, s); 
})(); 

function onPlusOneLoaded(){ 
    var params = { 
    clientid: 'YOUR_CLIENT_ID', 
    cookiepolicy: 'single_host_origin', 
    scope: 'https://www.googleapis.com/auth/plus.login', 
    contenturl: 'https://plus.google.com/pages/', 
    calltoactionurl: 'https://plus.google.com/pages/', 
    prefilltext: 'Hello Stack Overflow', 
    }; 
    gapi.interactivepost.render('ipost', params); 
    drawCanvas(); 
} 

function drawCanvas(){ 
    var ctx = document.getElementById('canvas').getContext('2d'); 
    for (var i=0;i<25;i++){ 
    ctx.fillStyle = "rgba(200,0,0,.5)"; 
    ctx.fillRect (10 + 10*i, 10 + 10*i, 55, 50); 
    } 
} 
</script> 

我不知道你在问什么关于“被视为用户操作”,但您可以通过API调用触发授权对话框,例如:

gapi.auth.authorize({ 
    client_id: 'YOUR_CLIENT_ID', 
    cookiepolicy: 'single_host_origin', 
    scope: 'https://www.googleapis.com/auth/plus.login' 
}); 

当你这样做时,你失去了在Android上执行无线安装的能力。

+0

Chrome不允许弹出窗口,除非它们是用户操作的直接结果 - 所以按钮可以产生一个弹出窗口,但带有超时的按钮不能。 – salmonmoose

+0

交互式帖子不在弹出框中呈现,而是在HTML容器内呈现。尝试在画布上渲染按钮,然后在想要显示交互式文章时将其移动/正确显示。 – class