刷新/ ctrl-r时更改Chrome扩展程序的网址

时间:2018-01-10 05:04:28

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

我在Chrome扩展程序和Chrome扩展程序的后台页面中运行了此代码:

window.onbeforeunload = function() {
  window.location.href = chrome.runtime.getURL('dist/index.html'); // change url
  confirm('are you sure you want to refresh?');
};

这些钩子似乎都没有被击中。有谁知道在刷新时是否有办法更改URL?我想重新加载一个不同于多功能框中当前URL的URL。

2 个答案:

答案 0 :(得分:1)

您可以使用tabs API完成此操作。

您可以使用tabs.onUpdated收听更改网址,然后在回调中收听,然后使用tabs.update更改网址。

答案 1 :(得分:1)

Chrome扩展功能非常强大。

我建议使用chrome.tabs.onUpdated事件来捕获页面更改后的内容,然后使用chrome.tabs.executeScript注入window.location.replace来电。

这样的事情,但你需要处理边缘情况。

chrome.tabs.onUpdated.addListener(function (tabId, changeInfo, tab) {
    if (p.tab && p.tab.id === tabId && tab.status !== p.lastStatus) {//correct tab and not a duplicate status
        if (tab.status === 'complete') {
            chrome.tabs.executeScript(p.tab.id, { code: "window.location.replace('');", runAt: 'document_start' }, function () {
                console.log('script injected');
            });
        }
    }
});