内容脚本只运行一次(临时加载项)



我做了一个简单的临时插件:

manifest.json

{
"manifest_version": 2,
"name": "Content script test",
"version": "1.0",
"description": "TEST",
"content_scripts": [
{
"matches": ["*://*.telex.hu/*"],
"js": ["content-script.js"]
}
]
}

内容脚本.js

console.log("*** Content script is running for " + document.location.href);
window.addEventListener(
'load',
function(){ console.log("*** Hello World!"); },
true
);

我在FireFox和Chrome上进行了测试。

当我打开一个新的浏览器选项卡并加载到页面中时,例如https://telex.hu,然后我的插件正确运行(我在开发人员控制台中看到日志(。如果我右键单击页面上的链接,则所选页面(同一域(将在新选项卡中打开,加载项将正确运行。但是,如果我左键单击一个链接并在同一选项卡中打开所选页面(同一域(,那么什么都不会发生——插件不会运行(控制台上没有显示日志(。。。

解释是什么?我应该怎么做才能让插件在每个案例中都运行???

解决方案是:

内容脚本.js

let lastUrl = location.href; 
new MutationObserver(() => {
const url = location.href;
if (url !== lastUrl) {
lastUrl = url;
onUrlChange();
}
}).observe(document, {subtree: true, childList: true});
function onUrlChange() {
console.log('*** URL changed!', location.href);
}

最新更新