2015-11-18 147 views
2

chrome.tabs API爲我們提供了一種方法來偵聽每個選項卡的url更改。 https://developer.chrome.com/extensions/tabs#event-onUpdated從chrome.tabs.onUpdate獲取前一個網址

我可以添加一個偵聽器這樣的:

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做些什麼。

有沒有人知道這樣做的最好方法?

回答

2

看起來好像沒有好的方法從chrome.tabs API獲取上一個url。 什麼我目前做的是有一個跟蹤先前的網址每個tabId這樣一個HashMap:

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; 
    } 
}); 
0

試試這個:

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 「列在您的manifest.json中