0

我的页面上有 facebook 社交模块/api。我刚开始遇到问题,我无法从 FB 找到任何会导致此问题的 all.js 更新。

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

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

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

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

任何真正解决问题的想法或方法。

ps 这个问题是在上周二的时候注意到的......当他们发布他们的代码时。

我怎么知道它是 all.js?

  1. 我一一托管了我网站上的所有第三方脚本,以缩小我的页面抛出无响应错误时的范围。

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

  3. 当我在页面上包含 FB all.js 并省略一些其他模块时,有时会出错,有时不会 - 取决于页面上 dom 元素的数量(看起来)。FF 加载很好,IE8 不行。

4

1 回答 1

1

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

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

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

于 2013-03-12T09:02:06.903 回答