2015-04-29 28 views
5

Ho bisogno di fare un addon di Firefox aggiungere un pulsante alla barra degli indirizzi se la scheda è in un certo dominio.come rendere un addon/estensione aggiungere un'icona/pulsante alla barra degli indirizzi di Firefox se la scheda è aperta in un determinato dominio?

Sono riuscito a trovare l'elemento barra di navigazione-icone per la finestra corrente e aggiungere un figlio, ma che aggiunge l'icona a tutte le schede per quella finestra, invece della sola scheda pertinente. Come posso fare questo?

MODIFICA: Mi spiace di essere sul cellulare e non ha incluso il codice.

quello che ho finora:

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'); 
} 

ogni volta che io chiamo il sopra aggiungo un pulsante/icona per ogni scheda, invece di quello attuale attiva.

+1

Questo addon demo fa proprio questo, ma non considera e10s così vecchio (1 anno vecchio) e ha bisogno di improvvisazione, ma dovrebbe funzionare: https://gist.github.com/Noitidart/9266173 ho appena installato su Firefox Beta channel e funziona. aggiunge un cubo arancione alla barra sulla pagina non newtab e quando il focus dell'utente non è in urlbar. – Noitidart

+0

Quale codice hai già provato? Per favore * [modifica] la domanda * per includere il tuo codice sorgente. Si prega di consultare [Quali argomenti posso chiedere qui?] (Http://stackoverflow.com/help/on-topic), [Come faccio a fare una buona domanda?] (Http://stackoverflow.com/help/how -to-ask) e [Come creare un esempio minimo, completo e verificabile] (http://stackoverflow.com/help/mcve). Se tenteremo di verificare che la nostra soluzione funzioni per te, è MOLTO più facile farlo se abbiamo il tuo codice per iniziare piuttosto che dover fare tutto. Senza tale codice, c'è meno incentivo a trovare una risposta per te. – Makyen

+0

@Noitidart grazie, ma essendo molto molto nuovo a questo, è un po 'confuso. Poiché sto utilizzando l'SDK aggiuntivo e il bootstrap viene eseguito automaticamente, come posso utilizzare questo file di bootstrap? C'è un modo più semplice? – tiagosilva

risposta

0

Questa è un'implementazione hacky solo utilizzando le schede di SDK e API pulsante:

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(); 
    } 
    } 
}); 

Ci si sente klugey per creare/distruggere il tasto ogni volta che si passa le schede, ma l'esperienza dell'utente è esattamente quello che vuoi. Un approccio simile e forse "meglio supportato" potrebbe essere invece quello disable the button.

+0

Ma questo creerebbe/distruggerà un pulsante di tabulazione, volevo aggiungere un pulsante/icona della barra degli indirizzi come questo addon di rilevamento feed rss fa: http://imgur.com/7gum4uD credo che potrei usare la stessa strategia di distruggere/creare l'icona ad ogni interruttore di tabulazione come fai tu, grazie – tiagosilva

+0

Ah, ok. Sì, potresti usare approssimativamente la stessa strategia. – canuckistani