mmd*_*ger 0 facebook facebook-iframe facebook-javascript-sdk
我有一个带有邀请按钮(又名FB.ui - > apprequests)的页面选项卡应用程序,当它运行example.com/pagetab正常时(即,它弹出一个FB.ui朋友选择器窗口等)但是当我指向我的应用程序的页面选项卡时到那里并从Facebook内部加载iframe,没有任何反应.起初我认为按钮没有链接是一个问题,因为jquery不知道哪个文件已经准备就绪但是我转而使用onclick甚至从Chrome控制台输入命令(当然在iframe的范围内)但是没有任何反应......这是一个错误还是我错过了什么?
最小代码:
window.fbAsyncInit = function() {
FB.init({
appId : '123456789', // App ID
channelUrl : '//fbjscache.php', // Channel File
status : true, // check login status
cookie : true, // enable cookies to allow the server to access the session
xfbml : true // parse XFBML
}); };
(function(d){
var js, id = 'facebook-jssdk', ref = d.getElementsByTagName('script')[0];
if (d.getElementById(id)) {return;}
js = d.createElement('script'); js.id = id; js.async = true;
js.src = "//connect.facebook.net/en_US/all.js";
ref.parentNode.insertBefore(js, ref);
}(document));
function sendInvite() {
console.log("Inviting...");
FB.ui({method: 'apprequests',
title: 'Check out this great app!',
message: 'Join the fun!',
}, inviteCallback);
}
Run Code Online (Sandbox Code Playgroud)
然后在页面上
<a href="javascript:void(null)" class="invite" onclick="sendInvite()"><div class="facebookButton">Invite</div></a>
Run Code Online (Sandbox Code Playgroud)
当直接加载页面时,此代码完全按预期工作(弹出可爱的朋友选择器对话框),从iframe加载时不执行任何操作.这是一个错误还是有一些隐藏的设置/ JS怪癖,我没有抓住?
在发现相关问题后,(发送对话框在页面选项卡中不起作用)我意识到问题是您需要display : 'popup'在选项中手动包含参数,因此工作代码需要:
function sendInvite() {
FB.ui({method: 'apprequests',
title: 'Check out this great app!',
message: 'Join the fun!',
display: 'popup'
}, inviteCallback);
}
Run Code Online (Sandbox Code Playgroud)
这种行为明显违背了文档 所说的应该发生的事情:
平台对话框都可以在Web和移动Web上的各种显示上下文中无缝运行.如果您使用JS,iOS或Android SDK调用Dialog,将根据平台和用户使用的设备自动为您选择显示模式.
除非"页面选项卡"和"桌面浏览器"的晦涩组合自动选择"无显示,没有警告或错误消息".
为了记录,适当的画布应用程序没有此限制.我在一个完整的应用程序中使用了line-for-line相同的代码,一切正常.
| 归档时间: |
|
| 查看次数: |
3866 次 |
| 最近记录: |