为什么使用文档时页面会重新加载.位置在内容脚本的chrome扩展

Why does the page reload when using document.location in content script of a chrome extension?

本文关键字:位置 加载 扩展 chrome 脚本 文档 新加载 为什么      更新时间:2023-09-26
var location = document.location;

这是我的chrome扩展导致的内容脚本的第一行重新加载页面。这是预期行为吗?

如果你在全局范围内(我有一种预感),那么就没有局部变量,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();