javascript - Mozilla 扩展 : Multiple States between multiple tabs

标签 javascript firefox-addon mozilla

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

enter image description here

enter image description here

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

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

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

谢谢

最佳答案

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

--编辑:

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

--编辑2:

如果您单击“转换”按钮进行处理,并将该选项卡的属性 changedcontent 设置为 true。然后,您有一个加载/卸载监听器来检查刷新,将状态更改回 false。然后,如果您更改选项卡,则每当您更改选项卡时,tabSelect 事件都会更改按钮。

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

关于javascript - Mozilla 扩展 : Multiple States between multiple tabs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17647886/

相关文章:

javascript - 如何检查此示例中的复选框是否已选中(javascript/jQuery。)

firefox - 在用户干预最少的情况下安装多个 Firefox 扩展或插件的方法?

javascript - 带 url 的正则表达式

javascript - 从Firefox插件向页面注入(inject)js是否可以绕过CSP?

jquery - CSS3 动画不工作 Firefox

css - 组合框选项中的缩放问题(mozilla firefox)

javascript - tslint 创建错误,但功能方面它工作正常

javascript - JavaScript 中 "this"的范围

css - 默认视点有很大差异

javascript - 在 Mozilla Firefox 中使用 javascript 查找正文中的元标记