2013-07-15 36 views
1

我創建了一個mozilla擴展,它可以轉換其他語言的「轉換按鈕」(標籤:轉換)點擊的網頁內容 ,並將其標籤轉換爲英文,以便該按鈕(標籤:英文)點擊的內容被轉換成原始形式Mozilla擴展:多個選項卡之間的多個國家

enter image description here

enter image description here

我試圖設置屬性「changedcontent」與每個選項卡,使事件的焦點,集中標籤讀取其「changedcontent」a (「轉換」或「英文」)

問題出現,我需要在多個選項卡之間切換,不同選項卡中的插件應該保持不同的狀態,取決於它是否顯示更改的內容(應該顯示按鈕標籤:英文) 或它是原來的形式(應顯示按鈕標籤:「轉換」)

因此,當我點擊刷新按鈕或點擊網頁中的其他鏈接。在頁面上轉換內容的「英語」按鈕的標籤應該變成「轉換」 ,因此我已處理頁面卸載事件以跟蹤頁面刷新或鏈接點擊,但由於網頁可能包含多個框架/ iframe這個事件被多次調用。 如果在此期間我切換選項卡,其他選項卡的標籤會從「英語」轉換成「轉換」卸載事件的

代碼:

window.addEventListener('unload', unloadingDocument, true); 
function unloadingDocument() 
{ 

    var currentTab = gBrowser.selectedTab; 
    currentTab.setAttribute("changedcontent" , "false");//set the transliterated attribute back to false 
    var convertButton = document.getElementById("convert_button"); 
    convertButton.setAttribute("label","Convert"); 
} 

請建議我該如何解決這個問題並在多個標籤之間保持不同的mozilla插件狀態。

感謝

回答

1

您可以使用Session Store API有標籤之間的獨立國家。

- 編輯:

所以,如果你已經有了一個方法「或翻譯不」知道,如果一個特定的標籤,如果你想在按鈕更改選擇另一選項卡時要具有正確的狀態,您可能需要檢查tabSelect事件:Detecting tab selection 在此事件中,您檢查您的選項卡屬性以檢查是否必須更改按鈕的標籤/行爲。

- 編輯2:

如果當你點擊「轉換」按鈕,你做你處理,你該選項卡的屬性changedcontent設置爲true。然後你有一個load/unload listener檢查刷新,將狀態改回false。然後,如果您更改選項卡,則每當更改選項卡時,您都可以使用tabSelect事件來更改按鈕。

如果在將changedcontent更改爲true時添加此監聽器。然後當第一次調用beforeunload事件時,您檢查changedcontent是否爲true,您將其更改爲false並刪除偵聽器。

+0

但是,這已經通過附加屬性與每個選項卡,但如何處理它時按下刷新或其他內部鏈接被點擊,或者如果我按下刷新時按下刷新之間切換標籤 –

+0

我可能誤解了你的問題。我會更新我的答案。 –

+0

這也不會在我的情況下工作..我想捕獲頁面刷新時,或者當內部鏈接被點擊,並且也只有一次不是該網頁內的每個框架,事件發生在加載或卸載事件 –