实现setTimeout本机方法

时间:2012-10-21 12:00:41

标签: javascript internet-explorer settimeout setinterval browser-extension

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

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

1 个答案:

答案 0 :(得分:5)

您可以创建一个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中,或者带有其他名称的全局变量。)