2012-03-12 58 views
0

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

要重现:在Opera 打开http://apps.facebook.com/operafbbug/和,为了比较,在浏览器(或Firefox,IE)

预期行为:
画布高度将改变为1100,除了歌剧 当FB.Canvas .getPageInfo函数被调用并返回数据,这个页面会显示alert'info'。您将在所有浏览器中看到此警报,但Opera除外。

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

+0

和所有的工作,如果我们禁用browser.js – skyman 2012-03-12 12:12:11

回答

1

从FB bug跟踪引用自己:歌剧触发一个异步加载事件有关:空白,这导致canvas_proxy IFRAME过早移除。 Opera因为隐藏document.attachEvent而开始运行,以避免由脚本的IE分支(https://github.com/operasoftware/browserjs/issues/1)引起的另一个相关问题。

至于解决方法,嵌入Facebook的脚本之前做

document.attachEvent=function(){} 

应该工作作为一种解决方法,但非常难看,可能不会保留在将来的工作。这需要通过Facebook解决(通过忽略有问题的加载事件,并且在知道加载的真实目标内容之前不移除IFRAME)或由Opera(通过确定什么样的竞争条件或时序陷入困境使得Opera引发意外的加载事件,尽管IFRAME正在导航到其他某个URL)。

Opera也许应该为browser.js添加一个临时解决方法。你可能应该完全忽略这个问题,并在Opera和/或Facebook排除它之前暂缓对Opera进行测试。

+0

我现在已经开发了一个browser.js的解决方法,并添加更多的信息到Facebook的跟踪。我希望他们会发现它有用并做出回应。 – hallvors 2012-03-13 09:20:36

相关问题