我正在编写一个 Chrome 扩展程序。我需要它在特定页面上运行。可以在以下位置注册地址列表manifest.json:
"content_scripts": [{
"matches": ["http://myUrl1.com/*"],
...
}]
但是,该扩展程序旨在与特定系统一起使用,但事先不知道它将位于何处。
有一个选项 - 在所有地址上注册启动:
"content_scripts": [{
"matches": [ "http://*/*", "https://*/*" ],
...
}]
并通过将当前页面的地址与参数中记录的地址进行比较来运行必要的功能。但同时,该扩展仍然会在所有页面上工作,至少,检查和比较地址的功能。
实际上问题是:是否可以设置地址列表(例如,在扩展参数中)并以某种方式即时应用它?据我了解,清单不能即时修改。
不仅可以通过manifest中的指令执行内容脚本,还可以通过后台脚本“以编程方式”执行内容脚本。
为此,您需要在清单中指定:
在这种情况下,您不需要指定“content_script”指令。
在background.js中,您监视新选项卡的打开或当前选项卡的 URL 更改,例如,使用事件 ( chrome.tabs events )。
它看起来像这样: