0

尽管这里有很多类似的问题,但我无法用任何公认的解决方案来解决我的问题,所以我正在创建一个新问题。

我有一个内容脚本,可以为Jira Issue添加一些功能。但是,当从Filter Results Page导航到 Jira 问题时,内容脚本在我手动重新加载页面之前不会运行。

到目前为止我已经尝试过:

  1. 添加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);
  1. "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>"]
  1. 在内容脚本中监听window.onpopstate事件。虽然它检测到我何时单击浏览器中的“后退”和“前进”箭头,但当我单击“过滤结果页面”内的链接时它不会触发。
// content.js

window.onpopstate = () => {
 browser.runtime.sendMessage('webNavigation event triggered');
}

如何在无需手动重新加载页面的情况下运行此内容脚本?

4

0 回答 0