将外部XUL文件注入tabpanel

时间:2016-05-14 15:55:11

标签: firefox-addon xul

我正在处理一个旧的基于XUL的插件,发现有一个about.xul文件正在使用中。如果右键单击该加载项,则从about:addons页面使用此文件,然后从上下文菜单中选择“关于”。好。附加组件有一个带有自己的上下文菜单的图标,该菜单也有一个about选项,其中about.xul是从menuitem-> oncommand-> window.openDialog()访问的。

<menuitem label="About" oncommand="window.openDialog( 'chrome://{GUID}/content/about.xul', /* other parameters */);"/>

同样,这很公平,我可以重复使用未经修改的相同XUL文件。但是,这两个选项对用户来说可能并不明显。该加载项具有options.xul文件,其中包含一些tabbox-&gt; tabpanels。我认为第三次重用about.xul文件会很棒,只需添加一个&#34;关于&#34;小组在这里。

然后我意识到,这可能不像我想象的那么简单。

1 个答案:

答案 0 :(得分:1)

经过一些研究,试验和错误后,我添加了第3个<tab><tabpanel>,内部只有<iframe>

<tabs>
    [other tabs]
    <tab label="About"/>
</tabs>

<tabpanels>
    [other tabpanels]
    <tabpanel>
        <iframe src="chrome://{GUID}/content/about.xul" flex="1"/>
    </tabpanel>
</tabpanel>

这实际上有效,并且比我最初的想法简单得多。

但是,在我的特定情况下,需要动态修改CSS,以便在“选项”面板中调用“关于”页面时,样式与“选项”面板匹配,而不是默认设置。

现在剩下的就是有效地重新创建没有定义aboutURL时显示的默认“关于”对话框页面。这是编写基本XUL代码并根据需要动态应用CSS的练习。所有这一切都可以通过学习将XUL注入XUL - 从3个调用上下文重用的单个页面实现。这进一步设置了动态生成几乎整个页面的阶段,这为我向SDK及更高版本的迁移做好了准备。