如何通过工具栏按钮XUL打开Firefox AddOn的首选项窗格?

时间:2012-01-20 04:13:08

标签: firefox firefox-addon xul

我的FireFox AddOn的首选项窗格是一个XUL文档(XML用户界面语言)。该文件名为options.xul。

在browser.xul中,我创建了一个带有Options选项的工具栏。单击“选项”按钮时,应显示options.xul定义的“首选项”窗格。但我不知道如何从oncommand调用Preference窗格。

调用Javascript函数很简单。但是如何调用AddOn的首选项窗格呢?下面是一个调用javascript函数的oncommand,但是如何调用Preferene Pane?

如果有人可以请将更改发布到browser.xul中的以下内容:

    <menupopup>
    <menuitem label="Options" tooltiptext="Options" oncommand="example.LoadURL('http://www.google.com/')" />
    </menupopup>

2 个答案:

答案 0 :(得分:2)

您无法打开窗格。首选项窗格是首选项窗口的一部分。你的option.xul至少应该是这样的

<?xml version="1.0"?>
<?xml-stylesheet href="chrome://global/skin/" type="text/css"?>
<prefwindow xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
    <prefpane id="myOptions" label="My Options">
        <preferences>
            <preference id="pref-option1" name="myapp.myoption1" type="bool"/>
            <preference id="pref-option2" name="myapp.myoption2" type="int"/>
        </preferences>
        <checkbox label="Option Checkbox" preference="pref-option1"/>
        <textbox label="Duration:" preference="pref-option2"/>
    </prefpane>
</prefwindow>

在browser.xul中,您的oncommand可以使用以下命令打开首选项窗口:

oncommand = "window.openDialog('chrome://whatever_location/option.xul',' My Option Dialog','chrome,toolbar');"

(或者您想在jD中执行openDialog的任何方法)

有关prefwindows和窗格的更多信息,请参阅

https://developer.mozilla.org/en/XUL/prefwindow

https://developer.mozilla.org/en/XUL/prefpane

答案 1 :(得分:1)

我假设通过&#34; Preference Pane&#34;您实际上是指加载项的“选项对话框”窗口,而不仅仅是<prefpane>中的单个<prefwindow>。我还假设您有一个options.xul,它可以使用附加选项卡中的常规选项按钮作为选项对话框使用。

我发现需要使用与上面tazyDevel相比有些不同的选项才能打开选项对话框,使其看起来好像是从加载项选项卡打开的。我不确定这与2012年到2014年(当我编写下面的代码时)是否存在差异,或者它是否只是实现差异。如果我没记错的话,当我写这篇文章时,我检查了Firefox是如何启动选项对话框窗口并复制那里使用的选项。

我使用以下代码从附加组件的主对话框窗口中的按钮打开我的一个加载项的选项对话框(除了通过加载项选项卡提供它):

XUL(打开选项对话框的按钮):

<button label="Options" id="optionsButtonId"
        onclick="myExtension.optionsButton();"
        tooltiptext="Open the options window."
        hidden="false" />

JavaScript的:

/**
 * The Options button.
 */
optionsButton : function() {
     window.openDialog('chrome://myExtension/content/options.xul', '',
                       'chrome,titlebar,toolbar,centerscreen,modal');
},

根据代码的组织方式,您可能需要手动应用某些首选项和/或拥有将更改传播到需要了解的偏好观察者。

myExtension是一个占位符,可用于调用您的扩展程序。假设包含函数的单个对象变量,myExtension就是您用来标识chrome.manifest文件中内容的内容。