3

アドオン SDK で作成された Firefox アドオンがあります。

https://addons.mozilla.org/es/firefox/addon/board-notes/

ツールバー ボタンを追加するには、SDK toolbarbutton.js の一般的なライブラリを使用します。

https://github.com/erikvold/toolbarbutton-jplib/blob/master/lib/toolbarbutton.js

最初にインストールして動作するときにのみアイコンを追加したいのですが、アイコンは表示されますが、ブラウザを再起動するとアイコンが消えます。ユーザーは、右クリック ボタンを使用してセットアップ ブラウザ バーを開き、アイコンをバーに再度ドラッグする必要があります。その後、アイコンを再起動すると、その場所で正しく続行されます。

ほとんどのユーザーは、セットアップ オプションでアイコンを復元できることをおそらく知らないため、この動作を修正したいと考えています。

アイコンが再び移動する場所にないかどうかを検出するためにいくつかの機能をテストしましたが、ユーザーがアイコンを非表示にした場合にこれを行うと、再起動すると再び表示されます。これは Firefox のポリシーで禁止されています。

どんな助けにも感謝します、私は夢中になります。

私が使用するコードは次のとおりです。

 button = createButton(options);

 if (options.loadReason == "install")
 {
    button.moveTo({
       toolbarID: "nav-bar",
       insertbefore: "home-button"
    });
 }

 function createButton(options) {
   return toolbarbutton.ToolbarButton({
     id: "NoteBoard",
     label: "Note Board",
     tooltiptext: "Note Board",
     image: data.url("noteboardMini.png"),
     onCommand: function() {
         openPopup();
     },
     onContext: (function () {
       var installed = false;
       return function (e, menupopup, _menuitem) {
       //Install command event listener
         if (!installed) {
            menupopup.addEventListener("command", function (e) {
               var link = e.originalTarget.value;
               if (link) open(link.replace(/\?.*/ , ""));
            });
            installed = true;
         }
         var temp = (function (arr) {
            arr.forEach(function (item, index) {
               for (var i = index + 1; i < arr.length; i++) {
                  if (arr[i] && item.label == arr[i].label) {delete arr[index]}
               }
            });

         return arr.filter(function (item){return item});
    })(loggedins);
    //remove old items
     while (menupopup.firstChild) {
      menupopup.removeChild(menupopup.firstChild)
     }
     function addChild (label, value) {
      var item = _menuitem.cloneNode(true);
      item.setAttribute("label", label);
      item.setAttribute("value", value);
      menupopup.appendChild(item);
    }
    if (temp.length) {
      temp.forEach(function (obj) {
        addChild(obj.label, obj.link);
      });
    }
    else {
      addChild(_("context"), "");
    }
  }
 })()
 });
}
4

1 に答える 1

2

ライブラリToolbar Button Completeを使用できます。これは、toolbarbutton.js の私のフォークです。

ライブラリの使用

このライブラリは、元の toolbarbutton.js と同じように使用できますが、より多くのオプションと機能も備えています。

main.js ファイルで:

button = createButton(options);

// On install moves button into the toolbar
if (options.loadReason == "install") {
    button.moveTo({
        toolbarID: "nav-bar",
        insertbefore: "home-button",
        forceMove: true 
    });
};

ライブラリの実例はこちらにありますが、少し古くなっています。

ライブラリのインストール

コンピューターでアドオン SDK を使用している場合:

  1. github.comからToolbar Button Completeをダウンロードします。
  2. ディレクトリに追加しますpackages(SDK ディレクトリまたはアドオンのディレクトリの下のいずれか)。

Add-on Builderを使用してアドオンを作成する場合:

  1. ライブラリ フォルダの横にあるプラス ボタンをクリックします。

    プラスボタン。

  2. と入力しToolbar Button Completeます。
  3. [ライブラリの追加] ボタンをクリックします。

    ライブラリボタンを追加

ライブラリの更新

ライブラリはgithub.com hereでホストされています。

アドオンに Add-on Builderを使用している場合は、利用可能な更新があるときに小さな更新ボタンをクリックするだけです。

于 2013-06-20T01:54:23.267 に答える