尽管这里有很多类似的问题,但我无法用任何公认的解决方案来解决我的问题,所以我正在创建一个新问题。
我有一个内容脚本,可以为Jira Issue添加一些功能。但是,当从Filter Results Page导航到 Jira 问题时,内容脚本在我手动重新加载页面之前不会运行。
到目前为止我已经尝试过:
- 添加webNavigation侦听器(具有清单权限),但是当从过滤器页面单击 Jira 问题链接时,它们似乎都没有触发。
// background.js
const myLog = () => console.log('webNavigation event triggered');
browser.webNavigation.onDOMContentLoaded.addListener(myLog);
browser.webNavigation.onHistoryStateUpdated.addListener(myLog);
browser.webNavigation.onReferenceFragmentUpdated.addListener(myLog);
- 将"all_frames": true添加到 manifest.json 中,但这也没有使它起作用:
// manifest.json
...
"background": {
"scripts": ["background.js"],
"persistent": false
},
"content_scripts": [
{
"matches": ["*://jira.atlassian.com/*"],
"js": ["content.js"],
"all_frames": true
}
],
"permissions": ["tabs", "webNavigation", "<all_urls>"]
- 在内容脚本中监听window.onpopstate事件。虽然它检测到我何时单击浏览器中的“后退”和“前进”箭头,但当我单击“过滤结果页面”内的链接时它不会触发。
// content.js
window.onpopstate = () => {
browser.runtime.sendMessage('webNavigation event triggered');
}
如何在无需手动重新加载页面的情况下运行此内容脚本?