2017-01-01 54 views
0

我有一個使用下面的代碼瀏覽器擴展程序:如果我關閉瀏覽器,而網頁未選中runtime.lastError在運行tabs.executeScript:該標籤被關閉

chrome.tabs.onUpdated.addListener(
    function(tabId, changeInfo, tab) { 
    if (changeInfo.status === 'complete') { 
     chrome.tabs.executeScript(null, {file: "js/content.js"}); 
    } 
    } 
); 

正在加載,擴展名將崩潰。我相信這是因爲以下錯誤:

Unchecked runtime.lastError while running tabs.executeScript: The tab was closed. 

有沒有人知道我可以如何避免這個錯誤?

+0

好了,容易的事是檢查'chrome.runtime.lastError'在回調'chrome.tabs.executeScript()'。無論如何,你應該這樣做。這樣做至少會將任何問題轉移到其他方面(例如,可能會在調用回調之前銷燬上下文)。 – Makyen

+0

@sangerous,你的意思是「擴展會崩潰」是什麼意思? – Pacerier

+0

重複的https://stackoverflow.com/a/45603880/632951 – Pacerier

回答

0

將回調加到chrome.tabs.executeScript。是這樣的:

chrome.tabs.onUpdated.addListener(
    function(tabId, changeInfo, tab) { 
    if (changeInfo.status === 'complete') { 
     chrome.tabs.executeScript(null, {file: "js/content.js"}, 
     function(result) { 
      // Process |result| here (or maybe do nothing at all). 
     } 
    ); 
    } 
    } 
); 

您可以在官方Chrome API網站此功能查找文檔: https://developer.chrome.com/extensions/tabs#method-executeScript

+0

回調本身不起作用。您必須閱讀https://stackoverflow.com/a/45603880/632951中顯示的lastError – Pacerier