0
var location = document.location;
这是我的Chrome扩展的内容脚本的第一行,它导致页面重新加载 。这是预期的行为?在文档中我找不到任何提及。为什么页面在Chrome扩展的内容脚本中使用document.location时会重新加载?
var location = document.location;
这是我的Chrome扩展的内容脚本的第一行,它导致页面重新加载 。这是预期的行为?在文档中我找不到任何提及。为什么页面在Chrome扩展的内容脚本中使用document.location时会重新加载?
如果你在全球范围内(并且我有预感),那么就没有局部变量,并且var
什么也不做。因此,location
等于this.location
和this == window
...您可以看到发生了什么。在您的控制台中试用:var location = "http://example.com"
;或者,对于一个不太确切的例子,var foo = 17; console.log(window.foo);
(注意:我不是100%确定的,因为我已经写了一段Chrome扩展,但不知道你是否处在全局环境中;但它是符合我能想到的事实的唯一解释。)
要修复它,请更改变量的名称,或更好地引入非全局上下文;例如: -
(function() {
var location = window.location; // does not blow up
})();
或等价
function pleaseDontBlowUp() {
var location = window.location; // does not blow up
}
pleaseDontBlowUp();