Javascript 为什么在chrome扩展的内容脚本中使用document.location时会重新加载页面?

Javascript 为什么在chrome扩展的内容脚本中使用document.location时会重新加载页面?,javascript,dom,google-chrome-extension,Javascript,Dom,Google Chrome Extension,这是我的chrome扩展的内容脚本的第一行,它导致 重新加载页面。这是预期的行为吗?我在文档中找不到这方面的任何提及。如果您在全局范围内(我有预感),那么就没有局部变量,var什么也不做。因此,location等于this.location,而this==window。。。你可以看到这是怎么回事。在控制台中尝试:var location=”http://example.com“;或者,对于图形较少的示例,var foo=17;console.log(window.foo) (注意:我不是100%

这是我的chrome扩展的内容脚本的第一行,它导致
重新加载页面。这是预期的行为吗?我在文档中找不到这方面的任何提及。

如果您在全局范围内(我有预感),那么就没有局部变量,
var
什么也不做。因此,
location
等于
this.location
,而
this==window
。。。你可以看到这是怎么回事。在控制台中尝试:
var location=”http://example.com“
;或者,对于图形较少的示例,
var foo=17;console.log(window.foo)

(注意:我不是100%确定,因为我写了一个Chrome扩展已经有一段时间了,但我不知道你是否处于全球环境中;但这是唯一符合我所能想到的事实的解释。)

要修复它,要么更改变量的名称,要么引入一个非全局上下文;e、 g:

var location = document.location;
或同等地

(function() {
  var location = window.location; // does not blow up
})();

如果你在全局范围内(我有预感你在),那么就没有局部变量,
var
什么也不做。因此,
location
等于
this.location
,而
this==window
。。。你可以看到这是怎么回事。在控制台中尝试:
var location=”http://example.com“
;或者,对于图形较少的示例,
var foo=17;console.log(window.foo)

(注意:我不是100%确定,因为我写了一个Chrome扩展已经有一段时间了,但我不知道你是否处于全球环境中;但这是唯一符合我所能想到的事实的解释。)

要修复它,要么更改变量的名称,要么引入一个非全局上下文;e、 g:

var location = document.location;
或同等地

(function() {
  var location = window.location; // does not blow up
})();