从chrome.tabs.onUpdated获取以前的url

Get previous url from chrome.tabs.onUpdated

本文关键字:url 获取 chrome tabs onUpdated      更新时间:2023-09-26

chrome.tabs API为我们提供了一种方法来监听每个选项卡的url变化。https://developer.chrome.com/extensions/tabs#event-on更新的

我可以添加这样一个监听器:

chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
    // changeInfo.url gives the updated url if it's changed
    // tab.url gives the current url for the tab
});

我想做的是检测域是否发生了更改,并在发生更改时执行一些操作。

例如,如果url从https://google.com/abc到https://google.com做点什么。

有人知道最好的方法吗?

看起来没有什么好方法可以从chrome.tabs API获取上一个url。我目前正在做的是有一个哈希图,它可以跟踪每个tabId的前一个url,如下所示:

var tabIdToPreviousUrl = {};
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
    if (changeInfo.url && changeInfo.url.match(/<regex>/g)) {
        var previousUrl = "";
        if (tabId in tab) {
            previousUrl = tabIdToPreviousUrl[tabId];
        }
        // If the domain is different perform action.
        if (previousUrl !== changeInfo.url) {
            // do something
        }
        // Add the current url as previous url
        tabIdToPreviousUrl[tabId] = changeInfo.url;
    }
});

试试这个:

var previousUrl = "";
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab){
  //Your code here
});
chrome.webNavigation.onBeforeNavigate.addListener(function(object){ 
 chrome.tabs.get(object.tabId, function(tab){ previousUrl = tab.url;});
});

请注意,您需要在清单中列出"webNavigation"。json