如何在Firefox加载项的地址/url栏中放置操作按钮图标

如何在Firefox加载项的地址/url栏中放置操作按钮图标,firefox,firefox-addon-sdk,Firefox,Firefox Addon Sdk,根据Firefox插件sdk的低级API,我可以完美地将扩展图标放在工具栏上。实际上,默认情况下,该按钮出现在Firefox工具栏中 var buttons = require('sdk/ui/button/action'); var button = buttons.ActionButton({ id: "XXXX", label: "XXXXXXYYYYY", icon: { "16": "./icon-16.png", "32":

根据Firefox插件sdk的低级API,我可以完美地将扩展图标放在工具栏上。实际上,默认情况下,该按钮出现在Firefox工具栏中

var buttons = require('sdk/ui/button/action');

var button = buttons.ActionButton({
    id: "XXXX",
    label: "XXXXXXYYYYY",
    icon: {
        "16": "./icon-16.png",
        "32": "./icon-32.png",
        "64": "./icon-64.png"
    },
onClick: handleClick
});
我在API文档中看不到任何将图标放在其他位置的选项

但很少有FF扩展能做到这一点。我想将扩展图标放在浏览器的地址栏中,如下图所示:


有什么解决方法吗?

目前无法使用附加SDK或可定制的UI API;基本上,您必须手动执行此操作–这意味着,跟踪所有浏览器窗口,在正确的位置附加一个XUL DOM节点,并处理单击

这一功能实际上是计划好的,但因为在新的Australis界面中,UX团队决定让位置栏更干净,删除所有图标——请注意,书签星形图标也被移到了外部——它被取消了优先级。我们有一个bug,但是,我有一个这样的功能原型,我想着陆,除非用户体验仍然有强烈的感觉。
如果是这样的话,我可能会将此类模块作为第三方模块发布。

目前无法使用附加SDK或可定制的UI API;基本上,您必须手动执行此操作–这意味着,跟踪所有浏览器窗口,在正确的位置附加一个XUL DOM节点,并处理单击

这一功能实际上是计划好的,但因为在新的Australis界面中,UX团队决定让位置栏更干净,删除所有图标——请注意,书签星形图标也被移到了外部——它被取消了优先级。我们有一个bug,但是,我有一个这样的功能原型,我想着陆,除非用户体验仍然有强烈的感觉。
如果是这样的话,我可能会将这种模块作为第三方模块发布。

下面是一些代码,它执行@ZER0所描述的功能。我还没有在Australis测试过,但我认为它应该仍然有效我已经测试过了,它确实有效

var loadUrlbarButton = function(doc, urlBtnClick) {
    var urlBarIcons = doc.getElementById('urlbar-icons')
    var btn = doc.createElement('toolbarbutton');
    btn.setAttribute('id', 'my-id');
    btn.setAttribute('image', require('sdk/self').data.url('my-icon.png'));
    btn.addEventListener('command', urlBtnClick, false);
    urlBarIcons.appendChild(btn);
    return btn;
}

var doc = require('sdk/window/utils').getMostRecentBrowserWindow().document;

var onBtnClick = function(event) {
    //do something when URL bar button is clicked
}

var urlbarButton = loadUrlbarButton(doc, onBtnClick);

下面是一些执行@ZER0描述的代码。我还没有在Australis测试过,但我认为它应该仍然有效我已经测试过了,它确实有效

var loadUrlbarButton = function(doc, urlBtnClick) {
    var urlBarIcons = doc.getElementById('urlbar-icons')
    var btn = doc.createElement('toolbarbutton');
    btn.setAttribute('id', 'my-id');
    btn.setAttribute('image', require('sdk/self').data.url('my-icon.png'));
    btn.addEventListener('command', urlBtnClick, false);
    urlBarIcons.appendChild(btn);
    return btn;
}

var doc = require('sdk/window/utils').getMostRecentBrowserWindow().document;

var onBtnClick = function(event) {
    //do something when URL bar button is clicked
}

var urlbarButton = loadUrlbarButton(doc, onBtnClick);

你试过我提供的代码了吗?我刚刚在Australis进行了测试,它仍然有效。你试过我提供的代码吗?我刚刚在澳大利亚进行了测试,它仍然有效。你是个种马。有没有一种简单的方法可以从外部函数动态修改按钮使用的图像?是的,只需调用
urlbarButton.setAttribute('image',data.url('my-activated-icon.png')好东西!非常感谢你!有没有办法在更改按钮后刷新它?那部分似乎不起作用,不用担心。把浏览器想象成一个网页。一旦你访问了一个元素,你就可以添加一个子元素、一个监听器、一些CSS…如果你想在浏览器/浏览器上多浏览一点的话,请看一下。内置的浏览器工具箱实际上执行与扩展相同的功能,因此不再需要它。你是一个螺柱。有没有一种简单的方法可以从外部函数动态修改按钮使用的图像?是的,只需调用
urlbarButton.setAttribute('image',data.url('my-activated-icon.png')好东西!非常感谢你!有没有办法在更改按钮后刷新它?那部分似乎不起作用,不用担心。把浏览器想象成一个网页。一旦你访问了一个元素,你就可以添加一个子元素、一个监听器、一些CSS……如果你想在浏览器/浏览器上多浏览一点的话,可以看看。内置的浏览器工具箱实际上执行与该扩展相同的功能,因此不再需要它。