XUL:在同一文件中多次重用覆盖层?
我正在开发一个 Firefox 扩展。我需要在“工具”菜单和“上下文”菜单中显示一个菜单 X。工具菜单项和上下文菜单项在同一文件中定义,但菜单 X 在另一个文件中定义。
由于我通过 id 重复使用菜单 X,因此只有最后一次使用它才有效。如何在同一个文件中多次重复使用它而不产生冗余?
I'm developing a Firefox extension. There is a menu X which I need to show in both Tools menu and Context menu. Tools menu item and Context menu item are defined in same file but menu X in another file.
As I'm reusing menu X by id only last use of it is effective. How can I reuse it multiple time in same file without redundancy?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
可以使用 XBL 来完成。
It can be done using XBL.
我也没有找到好的解决办法。该方法是仅在覆盖层中定义菜单一次,然后将其克隆到“加载”事件处理程序中。然后,您可以将克隆插入到第二个位置。您必须小心,因为 ID 属性必须保持唯一 - 因此,如果您的菜单使用 ID 属性,您将必须另外重写它们。丑陋,我知道。
I haven't found a good solution either. The approach is rather to define the menu in the overlay only once and then clone it in your "load" event handler. You can then insert the clone at the second location. You have to be careful because ID attributes have to stay unique - so if your menu uses ID attributes you will have to additionally rewrite them. Ugly, I know.
根据定义,ID 是唯一的。这意味着您无法共享菜单项,但可以共享调用操作时执行的代码。实现此目的的一种方法是使用命令。
IDs are, per definitionem, unique. That means you can't share the menuitem but you can share the code that gets executed when the action is invoked. One way to achieve this is to use commands.