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

标签 javascript facebook facebook-javascript-sdk

我正在尝试使用 facebook UI 请求对话框来选择 friend 。这在 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(和节点)中,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);

此外,请确保您的“sendMessage”变量的作用域正确且未定义或为空。

语法

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

引用: https://developer.mozilla.org/en-US/docs/Web/API/Window.setImmediate

关于javascript - Facebook javascript FB.ui 请求在 IE11 和 Firefox 上挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22408065/

相关文章:

javascript - 使用jquery和php的评论回复程序?

xcode - 我在 xcode 的 viewcontroller.swift 中的一个按钮中编码 - 如何让它显示在 Storyboard 中?

iphone - iOS 6 facebook sdk 3.1.1登录错误

javascript - 从 Facebook api 获取帖子

asp.net - 奇怪的 Javascript JSON 未定义错误

javascript - 确保两个单独的对象具有唯一的总键集

ios - 为什么 iframe 中的 FB.Login javascript 调用未在 FB iOS 应用程序中显示 native 登录

Facebook 从/我/ friend 返回空数组

javascript - Firebase:如何将表单数据提交到不同的集合?

java - Facebook GRAPH API - 登录绕过。代币安全