2013-02-18 130 views
2

我嘗試了一切,但似乎沒有爲我工作。我試圖通過檢測窗口關閉來檢測瀏覽的結束,如下面的代碼,但這對我不起作用。我做錯了什麼,是否有另一種解決方案來檢測Chrome關閉?檢測到Chrome瀏覽器退出?

chrome.windows.onRemoved.addListener(function(windowId){ 
    alert("Browser exit!"); 
}); 
+0

你試過這個解決方案嗎? http://stackoverflow.com/questions/9961544/chrome-detect-when-browser-exits – Danilo 2013-02-18 01:19:49

+0

我當然做到了。什麼都沒有我不得不提一下,如果從我試圖檢測Chrome退出擴展程序的代碼中看不到這種情況。 – user436390 2013-02-18 01:55:16

回答

2

你一般的問題是,退出瀏覽器意味着瀏覽器可以不再運行腳本,以檢查它是否已經退出,但 - 這就像問一個人,如果他們已經死了:答案(若你得到一個)只會是「不」。

一個解決方案,你可以嘗試與background permission一個長期運行的背景頁:

能讓Chrome瀏覽器啓動得早,並關閉較晚,從而使應用程序和擴展可以擁有更長的使用壽命。

當任何已安裝的託管應用程序,打包的應用程序或擴展具有「後臺」權限時,Chrome會在用戶啓動Chrome之前立即運行(隱形)用戶登錄到其計算機。 「背景」權限也使Chrome繼續運行(即使在關閉最後一個窗口後),直到用戶明確退出Chrome。

該權限允許Chrome在所有瀏覽器窗口關閉後繼續運行擴展程序。通常情況下,Chrome只能在Windows打開時才能做,所以我們遇到了Chrome在所有窗口關閉時都無法檢測到的問題(如上所述)。有了後臺許可,即使所有窗口關閉,Chrome仍保留運行擴展代碼的功能。

+0

「背景許可」是什麼意思?你的意思是這樣的背景持久性:「背景」:{「persistent」:true,...} – user436390 2013-02-18 03:22:16

+2

@ user436390對不起,我使用了錯誤的鏈接!不,該權限實際上稱爲「背景」(請參閱​​更新的鏈接),它與持久性不同。 – apsillers 2013-02-18 03:42:57

+0

謝謝,我會盡力並儘快報告。 – user436390 2013-02-18 03:58:04

0

我只是想控制當我的擴展退出不是整個瀏覽器;我的擴展名專門使用了一個文本框,所以我將它的onblur屬性設置爲一個函數並在那裏放置了我的退出代碼;可能不是你要找的東西,但它適用於我!

鉻開發者網站建議由於「消耗的內存和其他資源」而不使用後臺頁面;

我同意一個更一致的方式來控制擴展退出將是有用的;它是一個html頁面,否則它似乎與dom結合在一起;

0

鉻不提供任何API來檢測鉻瀏覽器正在關閉。但是,使用Chrome擴展時,我們可以在背景頁面內檢測Chrome瀏覽器打開事件。

background.js

chrome.runtime.onStartup.addListener(function() { 
     console.log("extension started: " + Date.now()); 
    }); 

此事件將觸發時,Chrome瀏覽器將啓動。接下來您可以使用任何技巧來確定Chrome瀏覽器已退出。