在我的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的错误还是和我在一起?
答案 0 :(得分:1)
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。它将确保此错误产生可见错误,并且不会被忽视。