アドオン 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"), "");
}
}
})()
});
}