我有一个内容脚本,当用户连接到
"*://www.youtube.com/*"
时运行。我需要知道 URL 何时更改,因为 YouTube 不会在您点击链接时打开新的“页面”;相反,它会更改 URL 和页面内容(我认为)。因此,我的内容脚本没有意识到任何事情发生了变化。 (我知道这一点是因为当我重新加载页面时它确实有效)
那么我如何知道我的脚本运行的选项卡的 URL 何时发生了变化?
[编辑]:我的问题涉及具体获取内容脚本正在运行的选项卡的 URL,而不是获取活动选项卡的 URL。
location.href
是获取活动 URL 的简单方法 https://developer.mozilla.org/en-US/docs/Web/API/Window/location
在后台脚本中,您可以侦听选项卡事件并将其发送到内容脚本。一个例子是这样的,
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
if (changeInfo.url) {
chrome.tabs.sendMessage(tabId, { tabChanged: true, title: tab.url });
}
});
它检查选项卡 url 是否正在更改,然后将当前 url 发送到内容脚本。在内容脚本上,可以通过监听后台脚本发送的事件来收集信息
chrome.runtime.onMessage.addListener(function (message, sender, sendResponse) {
if (message.tabChanged === true) {
console.log("url changed")
}
});