将外部XUL文件注入选项卡面板



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

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

同样,这是公平的,我可以不加修改地重用同一个XUL文件。但是,这两个选项对用户来说可能不那么可见。该插件有一个options.xul文件,其中包含一些选项卡框->选项卡面板。我认为第三次重用about.xul文件会很好,只需在这里添加一个"关于"面板。

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

经过一番研究、尝试和错误,我添加了第三个<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而实现的,XUL是从3个调用上下文中重用的单个页面。这进一步为动态生成几乎整个页面奠定了基础,这为我向SDK及更高版本的迁移做好了准备。

最新更新