「変換ボタン」(ラベル: 変換) をクリックすると Web ページのコンテンツを他の言語に変換する mozilla 拡張機能を作成しています。そのラベルは英語に変換され、そのボタン (ラベル: 英語) をクリックするとコンテンツが元の形に変換されます
各タブに属性「changedcontent」を設定して、イベントフォーカス時にフォーカスされたタブが「changedcontent」属性を読み取り、ボタンにラベルを設定しようとしました(「変換」または「英語」)
複数のタブを切り替える必要がある場合に問題が発生します。別のタブのプラグインは、変更されたコンテンツを表示しているか (ボタン ラベルを表示する必要がありますか) または元の形式 (ボタン ラベルを表示する必要があります) に応じて異なる状態を維持する必要があります: "変換")
そのため、更新ボタンをクリックするか、Webページの他のリンクをクリックすると。ページのコンテンツが変換された「英語」のボタンのラベルは「変換」に変更する必要があるため、ページの更新またはリンクのクリックを追跡するためにページのアンロード イベントを処理しましたが、Web ページには複数のフレーム/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 プラグインのさまざまな状態を維持する方法を提案してください。
ありがとう