Lig*_*lb1 7 javascript facebook facebook-javascript-sdk
我正在尝试使用facebook UI请求对话框来选择朋友.这在safari和Chrome中运行得非常好,但是在firefox和IE11(尚未测试的低版本)中,它会随着加载动画一直挂起.
function pickFriend(ev)
{
FB.ui(
{
method: "apprequests",
message: "Choose a friend.",
max_recipients: 1,
title:"Invite a friend"
},sendMessage);
ev.preventDefault();
}
$("#element").click(pickFriend);
Run Code Online (Sandbox Code Playgroud)
然后我尝试直接在控制台中调用该函数,以确保它不是我的实现,这是问题,并且我得到了与加载动画挂起的相同结果.然后我尝试了不同的显示选项,我可以在弹出模式下工作,但对我来说这不是很优雅,我更喜欢它在iframe模式下工作,就像在safari和chrome中一样.
还有其他人遇到过这个问题吗?如果是这样的话有这个原因并且可以解决吗?
我认为这可能完全取决于Facebook的修复,如果我想保持浏览器兼容性,那么除了在弹出模式下运行之外别无选择.
小智 1
在 IE11(和 Node)中,JavaScript 引擎可能会因长时间操作而挂起。建议的解决方法是利用“setImmediate”,因此对于您的示例:
function pickFriend(ev)
{
ev.preventDefault();
setImmediate(FB.ui
, {
method: "apprequests",
message: "Choose a friend.",
max_recipients: 1,
title:"Invite a friend"
}
, sendMessage
);
}
$("#element").click(pickFriend);
Run Code Online (Sandbox Code Playgroud)
另外,请确保您的“sendMessage”变量的范围正确,并且不是未定义或空。
句法
var immediateID = setImmediate(func, [param1, param2, ...]);
var immediateID = setImmediate(func);
Run Code Online (Sandbox Code Playgroud)
参考: https ://developer.mozilla.org/en-US/docs/Web/API/Window.setImmediate