在我的擴展中,我將一條消息從background.js傳遞到contentScript.js。如果在Chrome擴展中使用「run_at」:「document_start」,消息傳遞會發生兩次
的問題是,當我在我的manifest.json使用
"run_at" : "document_start"
,從background.js到contentScript.js的消息被稱爲兩次,有時甚至比這更多。
消息傳遞不止一次對我而言有點貴,因爲我正在向服務器發送調用,並且多次在服務器上處理相同的值是非常昂貴的。
background.js
chrome.tabs.onUpdated.addListener(function(tabId, changeInfo, tab) {
chrome.tabs.sendMessage(tab.id, {type: "get-url", url: tab.url});
});
contentScript.js
chrome.runtime.onMessage.addListener(
function(message, sender, sendResponse) {
switch(message.type) {
case "get-url" : someFunction(message.url);
break;
// other cases
}
});
有沒有辦法解決這個問題的方法嗎?
爲了找出導致第二條消息的問題,我們需要看一些代碼,不是嗎? – gkalpak
作爲編輯添加 – Akanksha