2015-11-18 113 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中