Mozilla扩展:多个选项卡之间的多个状态

时间:2013-07-15 06:21:15

标签: javascript firefox-addon mozilla

我正在创建一个mozilla扩展程序,在点击“转换按钮”(标签:转换)时转换网页的内容用其他语言 并将其标签转换为英文,以便点击该按钮(标签:英文)时,内容将转换为原始形式

enter image description here

enter image description here

我尝试为每个标签设置属性“changedcontent”,以便在事件焦点上,焦点标签读取其“changedcontent”属性并在按钮上设置标签(“转换”或“英语”)

问题出现在我需要在多个标签之间切换的情况下,不同标签中的插件应该保持不同的状态,具体取决于它是否显示更改的内容(应显示按钮标签:英文) 或者它是原始形式(应显示按钮标签:“转换”)

所以当我点击刷新按钮或点击网页中的其他链接时。页面上已转换内容的“英语”按钮的标签应更改为“转换”  所以为此我已经处理了页面卸载事件来跟踪页面刷新或链接点击,但由于网页可能包含多个框架/ 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 个答案:

答案 0 :(得分:1)

您可以使用Session Store API在标签之间保持独立状态。

- 编辑:

因此,如果您已经有办法知道某个特定标签是否为“已翻译”,如果您希望在选择另一个标签时按钮更改为正确状态,您可能需要检查tabSelect事件:Detecting tab selection 在这种情况下,您检查选项卡属性以检查是否必须更改按钮的标签/行为。

- 编辑2:

如果您点击“转化”按钮进行处理,并将该标签的属性changedcontent设置为true。然后,您有一个load/unload listener来检查刷新,将状态更改回false。然后,如果您更改标签,则只要更改标签,就会有tabSelect事件更改按钮。

如果您在将changedcontent更改为true时添加此侦听器。然后,当首次调用事件beforeunload时,您会检查changedcontenttrue,是否将其更改为false并删除了侦听器。