文档用作其他选项卡

时间:2011-09-29 14:28:11

标签: javascript firefox firefox-addon

在我的firefox插件中。 我在浏览器中打开了两个选项卡,当我尝试在间隔/超时后访问“文档”时,在其中一个选项卡中,我抓住另一个选项卡的文档而不是...

例如: 标签1,document.title是:“测试页面” 标签2,document.title是:“第二个标签”

我在标签1中运行一个脚本:setTimeout(function(){alert(document.title)},5000)。 应警告“测试页面”,但警报显示“第二个标签”。

这是我的剧本:

gBrowser.addEventListener("DOMContentLoaded",function(e){ 
    window = e.originalTarget.defaultView;
    document = window.document;
    setTimeout(function(){ alert(document.title); }, 5000);
}, true);

仅当我打开第一个标签然后打开第二个标签时才会发生这种情况。

当我尝试更改任何dom元素时,会发生同样的事情。

当用户点击按钮时也会发生。

如何避免? 这可能是firefox的错误还是和我在一起?

1 个答案:

答案 0 :(得分:1)

不要忘记declare local variables

gBrowser.addEventListener("DOMContentLoaded",function(e){ 
    var window = e.originalTarget.defaultView;
    var document = window.document;
    setTimeout(function(){ alert(document.title); }, 5000);
}, true);

未声明的变量是自动全局的,特别是可以在现在和超时运行之间发生变化(更不用说其他许多令人讨厌的副作用)。

更好:switch on strict mode。它将确保此错误产生可见错误,并且不会被忽视。