【问题标题】:Open custom page on the settings click, firefox addon SDK在设置点击打开自定义页面,firefox插件SDK
【发布时间】:2016-01-20 11:20:07
【问题描述】:

我正在使用 Firefox 插件 SDK 来创建我的插件。 我使用simple-prefs 作为选项,但是当用户单击 Firefox 插件管理器中的“设置”按钮时,如何打开 自定义 页面?
感谢您的帮助!

【问题讨论】:

    标签: javascript firefox firefox-addon firefox-addon-sdk


    【解决方案1】:

    据我所知,你不能。如果您有一些简单首选项系统无法表达的首选项,您可以在附加组件的首选项中添加一个按钮,该按钮可以在新选项卡或窗口中打开自定义页面。见control 输入:https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/simple-prefs.html

    我的建议是尽可能使用 simple-prefs,因为它们使用 Firefox Sync 在计算机和设备之间同步。

    【讨论】:

    • 感谢您的帮助!如果我可以使用 simple-prefs,我会使用。但我想生成动态的选项列表。这可以使用简单的首选项吗?现在我正在使用您的解决方案,选项中的按钮(控件)。
    • 实际上你可以,因为 FireGestures 插件(以及 Tab Mix Plus 和 Web 幻灯片)正是这样做的,虽然我不知道如何:(
    【解决方案2】:

    如何从插件管理器直接打开自定义页面

    实际上,您可以完全按照自己的意愿行事。当您点击插件管理器中的选项按钮时,这将打开您插件的首选项页面 - 它取代了打开插件关于页面的操作。

    此解决方案的功劳归于Noitidart

    这是一个无 JavaScript 的解决方案,信不信由你。 The docs are here。您必须在 install.rdf 中做两件事:

    1. 设置<em:optionsURL>resource://myAddonID/data/my.html</em:optionsURL>
    2. 设置<em:optionsType>3</em:optionsType>

    Noitidart actually created a sample addon 来说明这一点。对于完成所有工作的install.rdf 中的这两行代码,代码全部为空白除了

    Firefox 为您完成所有选项卡处理。

    顺便说一句,there are three options 代表<em:optionsType>

    • 1 在对话框中打开 optionsURL
    • 2 选项显示在插件管理器中
    • 3 在新选项卡(如果应用程序支持)或对话框中打开 optionsURL

    如何从 Addons Manager Addon 关于页面打开自定义页面

    此外,在docs for simple-prefs 的底部有control,您将其作为首选项放在 package.json 中,就像所有其他首选项一样(所有这些信息都直接来自页):

    当用户点击按钮时,监听 on() 的函数 调用此首选项的函数。

    这种类型需要一个名为“label”的强制属性,它是 作为字符串提供。它用于标记按钮。

    因此,使该按钮出现在插件选项区域中的代码(作为首选项以及它们在 json 文件中的 preferences 对象中的其余部分)如下所示:

    {
        "type": "control",
        "label": "Click me!",
        "name": "sayHello",
        "title": "Say Hello"
    }
    

    在您的 main.js 中,执行此操作以打开自定义页面(该页面位于您的 data 目录中;或者您可以在此处使用常规网页地址):

    var data = require("sdk/self").data;
    var sp = require("sdk/simple-prefs");
    sp.on("sayHello", function() {
      tabs.open( data.url("myCustomPage.html") );  //<======The KEY
    });
    

    请记住,"name" 是“消息”的名称,并且在 package.json 文件和 main.js 文件中都需要相同。

    试试吧!这很简单,而且效果很好!


    【讨论】:

    • 谢谢。如果您阅读了上一个答案和我的回复,我已经使用了这种方法,但这不是我想要的。它需要两个用户操作并且看起来不是原生的。
    • 好吧,在我看来,如果您转到插件管理器并单击“更多”并在那里查看插件信息,那么您仍然在插件管理器中。我的回答让您可以在“更多”页面上放置一个按钮。但我猜你想要它在“更多”页面之外。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多