Facebook javascript FB.ui请求在IE11和Firefox上挂起

Facebook javascript FB.ui request hangs on IE11 and Firefox

本文关键字:Firefox 挂起 IE11 javascript FB ui 请求 Facebook      更新时间:2023-09-26

我正在尝试使用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);

然后我尝试直接在控制台中调用该函数,以确保问题不是我的实现,并且我得到了与加载动画相同的结果。然后我尝试了不同的显示选项,我可以让它在弹出模式下工作,但对我来说这不是很优雅,我更喜欢它在iframe模式下工作,就像它在safari和chrome中一样。

还有其他人遇到过这个问题吗?如果是这样,这是有原因的,有解决办法吗?

我认为这可能是完全取决于facebook的东西来修复,这将留下没有其他选择,但在弹出模式运行,如果我想保持浏览器的兼容性

在IE11(和node)中,javascript引擎可能会在长时间的操作中挂起。推荐的解决方法是使用"setimate",因此对于您的示例:

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);

另外,确保你的"sendMessage"变量的作用域是正确的,而不是未定义的或空的。

语法

var immediateID = setImmediate(func, [param1, param2, ...]);
var immediateID = setImmediate(func);

参考:https://developer.mozilla.org/en-US/docs/Web/API/Window.setImmediate