如何在插件栏上添加一个图标在第一次安装

How to add an icon on addon bar at first install?

本文关键字:一个 图标 第一次 安装 插件栏 添加      更新时间:2023-09-26

我按照这个文档Mozilla Developer Network:创建工具栏按钮为我的插件创建一个按钮。它确实工作,但是当我第一次安装插件时,图标没有显示在插件栏上。

我如何使图标出现在插件栏后,用户安装我的插件,然后保持他的位置偏好?

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/css" href="chrome://.../content/firefox/browser.css"?>
<overlay xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
  <script type="text/javascript" src="chrome://...../content/firefox/browser.js" />
  <toolbarpalette id="BrowserToolbarPalette">
    <toolbarbutton id=".....-button" class="toolbarbutton-1 chromeclass-toolbar-additional"
      label="...." tooltiptext="Facebook Manager"
      oncommand="System.......Toolbar.Show(event)" />
  </toolbarpalette>
</overlay>

如何自动添加按钮到插件栏只一次?

我发现这段代码以编程方式添加按钮,它显示了我的按钮,但它与其他按钮混淆。

var myId    = "myaddon-button";
var navBar  = document.getElementById("addon-bar");
var curSet  = navBar.currentSet.split(",");
if (curSet.indexOf(myId) == -1) {
    var set = curSet.slice(0, curSet.length).concat(myId).concat(curSet.slice(curSet.length));
    navBar.setAttribute("currentset", set.join(","));
    navBar.currentSet = set.join(",");
    document.persist(navBar.id, "currentset");
    try {
        BrowserToolboxCustomizeDone(true);
    }
    catch (e) {}
}

插件栏工作正常

你只需要把你的元素放在工具栏里,并给它一个id为addon-bar例子:

你的js放到这里

    <toolbar id="addon-bar">
        <menulist>
            <your dropdown blah blah blah>
        </menulist>
    </toolbar
</overlay>

添加按钮不是"安装操作"。你只需要声明按钮作为覆盖的一部分,当你的扩展覆盖被应用时,它就会被添加进来。

无论如何,看起来你正在添加按钮到工具栏调色板…因此,当你右键单击顶部工具栏并单击"自定义…"时,它将显示在大按钮列表中。"

插件栏在底部,你可以这样添加:

<toolbar id="addon-bar">
  <!-- your elements go here. toolbarbutton, etc -->
</toolbar>

似乎addon-bar是坏的,但我可以把它添加到nav-bar看Firebug的代码。

if (firstrun) // from preferences
{
    Services.prefs.setBoolPref("extensions.addon.FirstRun", false);
    Services.prefs.setCharPref("extensions.addon.InstalledVersion", curVersion);
    var startButtonId = "addon-button";
    var navBar = document.getElementById("nav-bar");
    var currentSet = navBar.getAttribute("currentset");
    if (!currentSet)
        currentSet = navBar.currentSet;
    var curSet = currentSet.split(",");
    if (curSet.indexOf(startButtonId) == -1)
    {
        var set = curSet.concat(startButtonId);
        navBar.setAttribute("currentset", set.join(","));
        navBar.currentSet = set.join(",");
        document.persist(navBarId, "currentset");
        try
        {
            BrowserToolboxCustomizeDone(true);
        }
        catch (e) {}
    }
}