在URL更改时调用内容脚本

时间:2017-07-23 20:55:02

标签: javascript google-chrome events google-chrome-extension youtube

我是Chrome扩展程序的新用户。我知道那里有很多类似的问题和信息,但似乎都没有解决这个问题。

我需要在与*://*.youtube.com/watch?v=*匹配的每个页面上执行我的内容脚本。

我已尝试使用上述值和*://*.youtube.com/*作为匹配属性,但由于YouTube处理请求的方式,两者都无法正常工作。我也尝试使用onhashchange活动,但当然YouTube不会在其网址中使用锚点。我已经阅读了webRequest,但是当有人滚动评论并且页面加载了更多评论时,我不需要调用该函数。

我需要的是一种在URL更改时调用我的内容脚本的方法。我怎样才能做到这一点?

此外,我无法在document_start加载内容脚本,因为该扩展程序会抓取HTML并对其进行解析。

1 个答案:

答案 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);
        }

});