4

我正在 facebook 中开发浏览器扩展,现在我的问题是 facebook 覆盖了 setTimeout 和 setInterval 本机函数,它们的实现在 Internet Explorer 上不起作用。

有没有办法实现这些功能?

4

1 回答 1

7

您可以创建一个 iframe,然后访问它的window对象,获取新setTimeout定义并覆盖全局命名空间中的定义:

var f = document.createElement('iframe');
document.body.appendChild(f);
window.setTimeout = f.contentWindow.setTimeout;
document.body.removeChild(f);  

虽然这可行,但让 2 个脚本开始覆盖彼此的变量可能不是一个好主意。我建议您让 FB控制该setTimeout函数并使用它的新副本,但不要再次覆盖它(您可以将其存储在本地 var 或具有其他名称的全局变量中)。

于 2012-10-21T12:34:16.307 回答