1

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

在此处输入图像描述

在此处输入图像描述

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

当我需要在多个选项卡之间切换时出现问题,不同选项卡中的插件应保持不同的状态,具体取决于它是显示更改的内容(应显示按钮标签:英文)还是原始形式(应显示按钮标签:“兑换”)

所以当我单击刷新按钮或单击网页中的其他链接时。页面上带有转换内容的“英语”按钮的标签应更改为“转换”,因此我已处理页面卸载事件以跟踪页面刷新或链接点击,但由于网页可能包含多个框架/iframes事件被多次调用。如果同时我切换标签,其他标签的标签会从“英语”转换为“转换”

卸载事件的代码是:

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 插件的不同状态。

谢谢

4

1 回答 1

1

您可以使用Session Store API在选项卡之间拥有独立的状态。

- 编辑:

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

-- 编辑 2:

如果当您单击“转换”按钮时进行处理,并且changedcontent将该选项卡的属性设置为true. 然后,您需要load/unload listener检查刷新,将状态更改回false. 然后,如果您更改选项卡,则tabSelect无论何时更改选项卡,您都会有更改按钮的事件。

如果在更改changedcontenttrue. 然后,当beforeunload第一次调用事件时,检查 if changedcontentis true,将其更改为false并删除侦听器。

于 2013-07-15T08:11:42.567 回答