2011-09-29 70 views
1

在我的Firefox插件中。 我有两个选项卡中打开在我的浏览器,当我尝试访问“文档”间隔/超时后,在其中一个选项卡,我抢,而不是另一个选项卡的文件...文档被用作其他选项卡

例如: 标签1,document.title是:“Test page” Tab 2,document.title is:“Second tab”

我在标签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); 

这只有当我打开第一个选项卡happends,然后打开第二。

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

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

如何避免这种情况? 这可能是一个Firefox的错误或与我?

回答

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。它会确保这个错误产生一个明显的错误,不会被忽视。

+0

谢谢,我没有声明变量。这有帮助。我用事件解决了这个问题:'function(e){var document = e.originalTarget.ownerDocument;}'这是最糟糕的问题(你点击一个标签上的按钮,事件发生在第二个标签中) – StiveKnx

相关问题