2013-08-23 93 views
0

我正在編寫一個Chrome擴展,它使用chrome.windows.onFocusChanged.addListener來執行內容腳本。只要我在不同的chrome窗口之間切換,這工作正常,但是,當Chrome關閉時,偵聽器也會被觸發。在這種情況下,函數內的代碼會導致擴展崩潰。chrome.windows.onFocusChanged.addListener在關閉Chrome時崩潰,崩潰插件

我試圖爲未定義的chacking,但似乎並沒有問題。

代碼lookls鏈接纔可這個

chrome.windows.onFocusChanged.addListener(function() 
{ 
     var ctab = chrome.tabs.getCurrent; 
     if(typeof ctab === "undefined") 
     { 

     } 
     else 
     { 
      chrome.tabs.executeScript(ctab.id,{file:"inject.js"}); //THIS LINE CRASHES THE APP WHEN I CLOSE THE BROWSER 
     } 
}); 

我有一個計劃的阿勒特,這也是執行腳本(這會導致崩潰當我關閉調度和執行之間的瀏覽器)類似的問題。

function onAlarm(alarm) 
{ 
    if (alarm && alarm.name == 'check') 
    { 

     var ctab = chrome.tabs.getCurrent; 
     chrome.tabs.executeScript(ctab.id,{file:"inject.js"}); //CRASH 
     //more code... 

有沒有人知道如何避免這種崩潰?

編輯:工作實施例

的manifest.json

{ 
"name": "Rest Extension", 
"description": "Set an Artnet Controler to the background collor", 
"manifest_version": 2, 
"version": "1", 
"permissions": ["tabs", "http://*/*", "https://*/*", "background", "alarms"], 
"background": {"scripts": ["background.js"]}, 
"content_scripts": [{"matches": ["http://*/*", "https://*/*"],"js": ["inject.js"]}], 
"browser_action": 
    { 
     "default_icon": "16x16.png", 
     "default_popup": "popup.html" 
    } 
} 

background.js

chrome.windows.onFocusChanged.addListener(function() 
{ 
     var ctab = chrome.tabs.getCurrent; 
     if(typeof ctab === "undefined") 
     { 

     } 
     else 
     { 
      chrome.tabs.executeScript(ctab.id,{file:"inject.js"}); //THIS LINE CRASHES THE APP WHEN I CLOSE THE BROWSER 
     } 
}) 

所有其他文件可以是空的(包括inject.js)

+0

你說的崩潰是什麼意思?你可以創建一個自包含的示例,並在http://crbug.com/new –

+0

報告錯誤它可能不是一個鉻錯誤(我認爲),但與我的編程有關的問題。崩潰時,我的意思是關閉屏幕右下角的瀏覽器後,顯示通知,擴展程序崩潰,我可以單擊該通知重新啓動擴展程序。 –

回答

2

chrome.tabs.getCurrent是一種方法:不是Tab對象的實例。 你應該試試這個:

chrome.windows.onFocusChanged.addListener(function() 
{ 
    chrome.tabs.getCurrent(function(ctab) 
    { 
     chrome.tabs.executeScript(ctab.id, { file: "inject.js" }); 
    }); 
}); 

參考:http://developer.chrome.com/extensions/tabs.html#method-getCurrent

+0

謝謝。我發現,檢查undefined是一個很好的IDE這也讓我結束了使用它像這樣 chrome.windows.onFocusChanged.addListener(函數(){ chrome.tabs.getCurrent(函數(CTAB) { (!CTAB = 「未定義」)\t \t如果 \t \t { \t \t \t chrome.tabs.executeScript(ctab.id,{文件: 「inject.js」}); \t \t} });} ); –