2016-04-29 100 views
3

這樣做的目標是讓我的擴展等待歷史更改,具體取決於它所說的某個操作。多個chrome.webNavigation.onHistoryStateUpdated不起作用

這裏是我迄今爲止

popup.js

chrome.tabs.update({ url: "https://www.WEBSITE.com/messages" }); 

chrome.webNavigation.onHistoryStateUpdated.addListener(function(details) { 
    if (details.url.indexOf("messages") >= 0) { 
     chrome.extension.getBackgroundPage().chrome.tabs.executeScript(null, { 
      file: 'getInboxStats.js' 
     });; 
    } else {//if (details.url.indexOf("match") >= 0) { 
     chrome.extension.getBackgroundPage().chrome.tabs.executeScript(null, { 
      file: 'startBotting.js' 
     });; 
    } 
}); 

chrome.runtime.onMessage.addListener(function(message) { 
    if (message.type == "emptyAmount") { 
     emptyAmount = message.content; 
     if (!(percentageOfMessages > 0)) { 
      percentageOfMessages = 50; 
     } 
     amountToSend = Math.floor(emptyAmount * (percentageOfMessages/100)); 
     alert(amountToSend); 
     chrome.tabs.update({ url: "https://www.WEBSITE.com/match" }); 
    } 

}); 

getInboxStats.js

var currentAmount = document.getElementsByClassName('count')[1].innerHTML; 
var maxAmount = document.getElementsByClassName('total')[0].innerHTML; 
var emptyAmount = maxAmount - currentAmount; 

chrome.runtime.sendMessage({ content: emptyAmount, type: "emptyAmount" }); 

startBotting.js

alert("TEST"); 

我的問題是,getInboxStats.js開始,但它就像onHistoryStateUpdated似乎只因爲文件startBotting.js永遠不會顯示,上面寫着「TEST」

回答

2

你誤解的onHistoryStateUpdated目的警報馬上開始工作。

它通過歷史API捕獲history state manipulation without navigation的實例,而不是常規導航。當你撥打update({url: "..."})這是一個定期的導航。

如果你真的關心瀏覽器歷史更新,你應該使用chrome.history.onVisited

如果要使用webNavigation API捕獲常規導航,則應使用onCommitted事件。

您還應該查看chrome.tabs API。