我是Chrome扩展程序的新用户。我知道那里有很多类似的问题和信息,但似乎都没有解决这个问题。
我需要在与*://*.youtube.com/watch?v=*
匹配的每个页面上执行我的内容脚本。
我已尝试使用上述值和*://*.youtube.com/*
作为匹配属性,但由于YouTube处理请求的方式,两者都无法正常工作。我也尝试使用onhashchange
活动,但当然YouTube不会在其网址中使用锚点。我已经阅读了webRequest
,但是当有人滚动评论并且页面加载了更多评论时,我不需要调用该函数。
我需要的是一种在URL更改时调用我的内容脚本的方法。我怎样才能做到这一点?
此外,我无法在document_start
加载内容脚本,因为该扩展程序会抓取HTML并对其进行解析。
答案 0 :(得分:0)
我遇到了同样的问题,这就是我所做的。我添加了一个后台脚本来监听所有更改
chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
if (changeInfo.url) {
chrome.tabs.sendMessage(tabId, {
message: 'hello',
url: changeInfo.url
});
}
});
然后在内容脚本中,我听它并重新加载URL
chrome.runtime.onMessage.addListener(function(request, sender, sendResponse) {
if (request.message === 'hello') {
const { url } = request;
chrome.location.replace(url);
}
});