我試圖做一些事情,每當一個新的標籤打開,無論是通過Firefox啓動和當Firefox新手啓動後添加。我一直在下面的例子在:聽標籤打開/關閉和處理現有的標籤
https://developer.mozilla.org/en/Code_snippets/Tabbed_browser
所以我
var container = gBrowser.tabContainer;
container.addEventListener("TabOpen", tabAdded, false);
container.addEventListener("TabClose", tabClosed, false);
function tabAdded(event) {
alert("tabAdded!");
var browser = gBrowser.getBrowserForTab(event.target);
browser.pollingService = new PollingService(createGuid());
browser.pollingService.start();
}
而且我有密切類似的功能。這適用於標籤實際打開/關閉的情況,但我遇到了一些問題。
首先,當Firefox打開時,它的初始選項卡已經打開,但tabAdded事件從不會爲它啓動。同樣,當我關閉Firefox時,它從不會觸發TabClose爲這些標籤。
在這種情況下,看起來正確的做法是遍歷gBrowser.tabContainer中的所有選項卡,並將它們添加到它們,並在Firefox關閉時執行類似的操作。不幸的是,我不太清楚如何知道Firefox何時關閉(也可能有更好的方法來處理這個問題,但我想不出來)。
其次,有時當我的初始化腳本運行時,gBrowser.tabContainer可能是未初始化的;是否有一個特定的事件我應該傾聽,以瞭解何時可以安全地將監聽器添加到tabContainer?
但是,每當網頁發生變化時,不要在裝入/卸載事件時啓動,而是不要啓動裝入/卸載事件?如何區分頁面更改時間和Firefox實際打開/關閉的時間以瞭解何時執行初始化/清理? – DivineWolfwood 2011-03-02 18:20:55
如果你添加一個普通的事件監聽器到(chrome)窗口,那麼它只會看到chrome窗口的加載和卸載事件,因爲它們不會從內容窗口冒出來。 (如果你真的需要它們,你仍然可以在內容窗口捕獲它們。) – Neil 2011-03-02 19:59:17
啊,這似乎適用於打開,但我仍然在卸載時遇到問題。我很喜歡:\t \t window.addEventListener(「beforeunload」,this.handleTabClosing,false);但handleTabClosing中的警報永遠不會實際觸發; beforeunload是我想在這裏聽的事件,對吧? – DivineWolfwood 2011-03-02 21:50:07