var location = document.location;
这是我的chrome扩展程序的内容脚本的第一行导致 页面重新加载。这是预期的行为吗?我在文档中找不到任何提及的内容。
答案 0 :(得分:4)
如果你在全球范围内(我有预感),那么就没有局部变量,而var
什么都不做。因此,location
等于this.location
和this == window
......您可以看到它的去向。在您的控制台中尝试:var location = "http://example.com"
;或者,对于较不图形的示例,var foo = 17; console.log(window.foo);
(注意:我不是百分百肯定,因为我已经写了一段Chrome扩展程序并且不知道你在全球范围内的事实;但它是唯一的解释符合我能想到的事实。)
要修复它,要么更改变量的名称,要么更好地引入非全局上下文; e.g:
(function() {
var location = window.location; // does not blow up
})();
或等效
function pleaseDontBlowUp() {
var location = window.location; // does not blow up
}
pleaseDontBlowUp();