2013-07-23 19 views
5

我開發了Chrome擴展程序。Chrome擴展程序onSuspend從未被稱爲

我嘗試添加事件監聽器到chrome.runtime.onSuspend,但它永遠不會被調用。

我使用下面的代碼,但localStorage沒有修改,也沒有在控制檯中的日誌消息(我使用--enable-logging --v=1將日誌消息保存到文件)。

chrome.runtime.onSuspend.addListener(function() { 
    localStorage["suspend"] = new Date(); 
    console.log("On suspend"); 
}); 

測試盒:WinXP的SP3的x86的Chrome 28.0.1500.72米

我已經創建了測試延長輕鬆重現此問題:

manifest.json

{ 
    "manifest_version": 2, 

    "name": "Chrome onSuspend test", 
    "version": "1.0", 

    "background": { 
    "scripts": ["background.js"] } 
} 

background.js

chrome.runtime.onSuspend.addListener(function() { 
    localStorage["suspend"] = new Date(); 
    console.log("On suspend"); 
}); 

回答

8

onSuspend事件僅在事件頁面變爲非活動狀態時觸發。

因爲您沒有在清單文件中聲明persistent: false,所以背景頁面是background page而不是event page。因此,該頁面永遠不會變爲非活動狀態,並且永遠不會觸發該事件。

如果你希望把你的背景頁在活動頁面,使用

... 
    "background": { 
     "scripts": ["background.js"], 
     "persistent": false 
    } 
} 
+2

不宜背景頁成爲瀏覽器關閉/擴展刪除或擴展禁用事件不活躍? – Anton

+3

我該如何處理這些事件? – Anton

+0

@Anton你不能。當瀏覽器關閉時,所有分機都會在沒有任何通知的情況下終止。 –