2015-04-29 6 views
5

Potrzebuję dodać dodatek do Firefoksa, aby dodać przycisk do paska adresu, jeśli karta znajduje się w określonej domenie.w jaki sposób dodatek/rozszerzenie dodaje ikonę/przycisk do paska adresu Firefoksa, jeśli karta jest otwarta w określonej domenie?

Udało mi się znaleźć ikony elementów nawigacyjnych dla bieżącego okna i dodać element potomny, ale dodałem tę ikonę do wszystkich kart w tym oknie, a nie tylko do odpowiedniej karty. Jak mogę to zrobić?

EDYCJA: Przepraszamy, że byłem na urządzeniu mobilnym i nie zawierałem kodu.

co mam do tej pory:

var windowsUtils = require('sdk/window/utils'); 

var loadButton = function(doc, urlBtnClick) { 
    var urlBarIcons = doc.getElementById('urlbar-icons'); 

    var btn = doc.createElement('toolbarbutton'); 
    btn.setAttribute('id', 'button-icon'); 
    btn.setAttribute('image', self.data.url('./images/icon16.png')); 
    btn.click(onButtonClick); 
    urlBarIcons.appendChild(btn); 
    return btn; 
} 

var onButtonClick = function(event) { 
    console.log('i was clicked'); 
} 

gdy zgłoszę powyższego dodać ikonę/przycisk na każdej karcie, a nie bieżącej aktywnej jeden.

+1

Ten dodatek demo robi właśnie to, ale nie uważa e10s, więc jest stary (1-letni) i wymaga poprawy, ale powinien działać: https://gist.github.com/Noitidart/9266173 Właśnie zainstalowałem go na Firefox Beta i działa. dodaje pomarańczową kostkę do paska na stronie niezwiązanej z funkcją NewTab, a gdy fokus użytkownika nie znajduje się w pasku adresu. – Noitidart

+0

Jaki kod już wypróbowałeś? Proszę * [edytuj] pytanie *, aby dołączyć swój kod źródłowy. Zobacz [Jakie tematy mogę tu zadać?] (Http://stackoverflow.com/help/on-topic), [Jak zadać dobre pytanie?] (Http://stackoverflow.com/help/how -to-ask) i [Jak utworzyć przykład minimalny, kompletny i sprawdzalny] (http://stackoverflow.com/help/mcve). Jeśli mamy zamiar spróbować zweryfikować, czy nasze rozwiązanie działa dla ciebie, to DUŻO jest to łatwiejsze, jeśli dysponujemy twoim kodem, aby zacząć od niego, zamiast go wymyślać. Bez takiego kodu jest mniej motywacji, aby znaleźć dla ciebie odpowiedź. – Makyen

+0

@Noitidart dziękuję, ale bycie bardzo nowym w tym, jest nieco mylące. Ponieważ korzystam z dodatku SDK, a ładowanie odbywa się automatycznie, jak mogę użyć tego pliku bootstrap? Czy istnieje prostszy sposób? – tiagosilva

Odpowiedz

0

Jest to hacky realizacja tylko przy użyciu kart SDK i API przycisków:

let { ActionButton } = require("sdk/ui/button/action"); 
let tabs = require('sdk/tabs'); 
let soButton; 

tabs.on('activate', (tab) => { 
    if (/^http[s]*\:\/\/stackoverflow.com/.test(tab.url)) { 
    soButton = ActionButton({ 
     id: "so-button", 
     label: "This is StackOverflow!!", 
     icon: { 
     "16": "chrome://mozapps/skin/extensions/extensionGeneric.png", 
     "32": "chrome://mozapps/skin/extensions/extensionGeneric.png" 
     }, 
     onClick: function(state) { 
     console.log("clicked"); 
     } 
    }); 
    } else { 
    if (soButton && typeof (soButton.destroy === 'Function')) { 
     soButton.destroy(); 
    } 
    } 
}); 

Czuje klugey tworzenia/zniszczyć przycisk za każdym razem przełączać karty, ale doświadczenie użytkownika jest dokładnie to, co chcesz. Podobnym i być może "lepszym wsparciem" może być tylko disable the button.

+0

Ale to by utworzyło/zniszczyło przycisk tabulatora, chciałem dodać ikonę/przycisk paska adresu, tak jak to addycja rss feed addon: http://imgur.com/7gum4uD Myślę, że mogłem użyć tej samej strategii niszczenie/tworzenie ikony przy każdej zmianie karty tak, jak robisz, dzięki – tiagosilva

+0

Ah, ok. Tak - możesz użyć mniej więcej tej samej strategii. – canuckistani

Powiązane problemy