当all8中有太多dom元素时,Facebook all.js会崩溃 - 无响应的脚本

时间:2013-03-12 00:45:03

标签: facebook

我的页面上有facebook社交模块/ api。我刚开始遇到一个问题,我无法找到FB上all.js的任何更新,这会导致这种情况发生。

在IE8中,如果我包含某些页面模块(有很多DOM元素),那么facebook all.js文件会崩溃,IE会陷入困境并返回一个"无响应的脚本"弹出窗口。

如果我减少页面上DOM元素的数量,页面加载正常。我运行了一些页面启发式等等,它指向all.js,但没有给出具体细节。

其他人遇到这个?是否有我可以放在我的DOM元素上的设置,告诉FB不要对它进行递归或忽略它。

似乎FB all.js正在抓取我的页面。

任何想法或方法可以真正确定问题。

P.S。上周二发现了这个问题' ish ......当他们发布代码时。

我怎么知道它是all.js?

  1. 我在我的网站上逐个提交所有第三方脚本,以便在我的网页引发无响应的错误时缩小范围。

  2. 当我排除facebook / all.js时 - 错误就消失了。

  3. 当我在我的页面上包含FB all.js并省略一些其他模块时,我有时会得到错误,有时候不会 - 取决于我页面上dom元素的数量(似乎)。 FF加载很好,IE8 nope。

1 个答案:

答案 0 :(得分:1)

当使用参数xfbml=true初始化JS SDK时,它将遍历整个DOM,以查看是否有任何需要用任何社交插件替换的Facebook HTML5 / XFBML标记 - 以及IE 8不是最现代的浏览器,它没有提供非常有效的方法来查询DOM中的元素(如getElementsByClassName等),所以我认为这可能是脚本在DOM上运行很长时间的原因元件。

因此,您可以尝试使用xfbml参数显式设置为false来初始化SDK。如果在页面中有 XFBML标记需要解析,则可以使用FB.XFBML.parse使其仅解析特定元素或DOM的某些部分,这将减少需要的DOM节点数量迭代。

请尝试一下,看看它是否有助于加快速度。