2011-08-01 31 views
0

我遇到的问题是覆盖图的外观取决于当前加载项的状态。XUL:覆盖状态不会在多个窗口中更新

我有一个Menu Tools Popup Item例如'设置可见'。选中时,它会显示一些内容'Sample Text'作为内容区域上下文菜单弹出菜单中的菜单项。未选中时,“示例文本”被隐藏。它在一个窗口内工作正常,但问题在于另一个窗口已经打开。

我们称之为原始窗口窗口A和新窗口窗口B.当我从窗口A中选择“设置可见”时,窗口A中显示“示例文本”,但当切换到窗口B时,其“工具”菜单中的“设置可见”保持未选中状态,并且“示例文本”保持隐藏状态。我想要在多个窗口中实现此功能,以便当我使用窗口进行更改时,其他窗口实例也会更新其状态。我应该如何解决这个问题?作为附加信息,当我在窗口A中选择“设置可见”并打开一个新窗口时,比如说窗口C,这些更改将准确地反映在窗口C中,即从工具菜单中选择“设置可见” 'Sample Text'在窗口C中可见。

+0

如何将项目添加到内容区域上下文菜单?如果你在飞行中创建菜单,那么我很惊讶这个改变没有出现在现有的窗口中。 –

回答

2

每个叠加层仅在其自己的窗口上运行。如果你想改变影响所有的覆盖,那么你需要一些中央实例来通知他们。这样做的最基本方法是在单击“设置可见”时更改首选项。所有覆盖层应该注册一个listener for this preference,以便当这个首选项被改变时,他们可以采取必要的行动。

另一种方法是在你的扩展中有一个JavaScript code module(一个模块只加载一次)并在那里管理“Set Visible”按钮的状态。每个覆盖需要加载模块并在那里注册监听器功能。稍后单击按钮时,应调用模块函数,以调用所有已注册的监听器函数。