【发布时间】:2021-11-29 09:55:08
【问题描述】:
我一直在开发一个跨浏览器扩展程序(适用于 Chrome、Firefox、Opera 等),每次用户进入 Youtube 上的新页面时都会运行一个脚本。由于 Youtube 使用 History API 的 pushState 导航到新页面,因此仅在重新加载页面或在地址栏中明确输入 URL 时,以声明方式注入脚本才有效。为了解决这个问题,我使用 webNavigation API 中的 onHistoryStateUpdated 以编程方式注入脚本(如 here 所述)。
manifest.json:
...
"permissions": ["webNavigation", "https://*.youtube.com/*"]
...
background.js:
chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) {
chrome.tabs.executeScript(details.tabId, {file: "/content.js"});
}
我想将我的扩展移植到 Safari,但根据他们的documentation,不支持 onHistoryStateUpdated。是否有其他方法可以检测 Safari 中 pushState 的更改?
附:我希望我解释得足够好,因为这是我在 Stack Exchange 上的第一个问题。提前非常感谢!
【问题讨论】:
标签: javascript safari-extension pushstate browser-extension