2016-05-14 91 views
1

我正在处理基于旧的基于XUL的加载项,并发现有一个about.xul文件正在使用中。如果右键单击加载项并从上下文菜单中选择“关于”,则可从about:addons页面使用此文件。好。这个插件有一个带有自己的上下文菜单的图标,它也有一个about选项,其中about.xul是通过menuitem-> oncommand-> window.openDialog()来访问的。将外部XUL文件注入tabpanel

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

再次,这是公平的,我可以重复使用相同的XUL文件未修改。但是,这两个选项可能不会对用户可见。该附加组件有一个options.xul文件,其中包含一些tabbox-> tabpanels。我认为第三次重用about.xul文件会很好,只需在这里添加一个“关于”面板。

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

回答

1

经过一番研究,试验和错误,我添加了第三个<tab><tabpanel>,里面只有一个。

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

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

这实际上工作,并且比我最初想象的要简单得多。

但是,在我的特殊情况下,需要动态修改CSS,以便如果从“选项”面板调用“关于”页面,则样式与“选项”面板相匹配,而不是默认值。

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