【问题标题】:Facebook API not work in OperaFacebook API 在 Opera 中不起作用
【发布时间】:2012-03-12 12:11:05
【问题描述】:

Facebook API 在 Opera 中不起作用: FB.Canvas.setSize - 不改变画布大小。 FB.Canvas.getPageInfo - 不调用回调函数。

重现: 在 Opera 中打开 http://apps.facebook.com/operafbbug/,然后在 Chrome(或 Firefox、IE)中进行比较

预期行为:
画布高度将更改为 1100,Opera 除外 当调用 FB.Canvas.getPageInfo 函数并返回数据时,此页面将显示警报“信息”。您将再次在除 Opera 之外的所有浏览器中看到此警报。

Facebook 错误跟踪器中的错误: http://developers.facebook.com/bugs/188820761219553

【问题讨论】:

  • 如果我们禁用 browser.js,一切正常

标签: facebook facebook-graph-api opera


【解决方案1】:

从 FB 错误跟踪器中引用我自己的话:Opera 为 about:blank 触发了一个异步加载事件,这导致 canvas_proxy IFRAME 被过早删除。 Opera 开始遇到此问题是因为隐藏 document.attachEvent 以避免由脚本的 IE 分支(https://github.com/operasoftware/browserjs/issues/1)引起的另一个相关问题。

至于解决方法,做

document.attachEvent=function(){}

在嵌入 Facebook 脚本之前应该是一种变通方法,但它非常难看,并且将来可能不会继续工作。这需要由 Facebook(通过忽略有问题的加载事件并且在知道加载的真实目标内容之前不删除 IFRAME)或由 Opera(通过找出什么竞争条件或时间陷阱使 Opera 触发意外加载事件来解决,即使IFRAME 正在导航到其他 URL)。

Opera 也应该为 browser.js 添加一个临时解决方法。您可能应该完全忽略这个问题,并推迟使用 Opera 进行测试,直到 Opera 和/或 Facebook 解决它。

【讨论】:

  • 我现在为 browser.js 开发了一个解决方法,并向 Facebook 的跟踪器添加了更多信息。我希望他们会发现它有用并做出回应。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-05
相关资源
最近更新 更多