2013-05-28 17 views
6

non sono riuscito a iniettare CSS in estensione per Firefox. Ecco il mio codice.Iniettare CSS in Firefox Add on SDK

var tbb = require('toolbarbutton').ToolbarButton({ 
    id: 'button', 
    label: 'us-button', 
    image: self.data.url('img/on.png'), 
    onCommand: function() { 

    tabs.activeTab.attach ({ 

     contentScriptFile: [ 
      self.data.url('jquery/jquery.min.js'), 
      self.data.url('jquery/jquery-ui.js'), 
      self.data.url('recuperation.js'), 
      self.data.url('dialog.js') 
     ], 
     contentStyleFile: self.data.url('jquery/jquery-ui.css'), 

Io uso toolbar buttons di Erik Vold. contentStyleFile non sembra funzionare. Quando faccio clic sul pulsante, viene visualizzata la finestra di dialogo di JQuery ma senza il file css.

+1

Domanda: perché * dovrebbe * funziona? La [documentazione su 'tab.attach()'] (https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/tabs.html#attach%28options%29) doesn citare qualsiasi opzione 'contentStyleFile'. –

+0

Quindi, come chiamare la libreria JQuery quando faccio clic su un pulsante della barra degli strumenti? Voglio solo rendere visibile una semplice finestra di dialogo di JQuery. – seb68

+0

Usa lo script di contenuto per iniettare un tag di stile nel documento? –

risposta

2

si potrebbe ottenere via con l'utilizzo di un PageMod che porterebbe nel foglio di stile che si desidera e può anche iniettare il JavaScript.

Qualcosa di simile potrebbe funzionare:

var pm = require("sdk/page-mod").PageMod({ 
    include: tabs.activeTab.url, 
    attachTo: ["existing", "top"], 
    contentScriptFile: [ 
    self.data.url('jquery/jquery.min.js'), 
    self.data.url('jquery/jquery-ui.js'), 
    self.data.url('recuperation.js'), 
    self.data.url('dialog.js') 
    ], 
    contentStyleFile: self.data.url('jquery/jquery-ui.css') 
}); 

Poi, più tardi si vorrà distruggere questa PageMod quando hai finito con esso in modo che siano non solo in giro associate alle vecchie pagine.

pm.destroy(); 
+0

Grazie per la risposta. Quando inserisco "include: tabs.activeTab.url", non funziona. Ho già 'var tabs = require ('sdk/tabs');'. Se scrivo 'include: '*'', funziona. Tuttavia, è possibile chiamare pageMod quando clicco su un pulsante? – seb68

+0

È necessario aggiungere 'attachTo: [" esistente "," top "],' alle opzioni PageMod che si passano altrimenti attenderà il caricamento della pagina. –

+0

Grazie. Funziona ma solo sulla prima scheda che è stata aperta, ecco perché cerco un modo per chiamare pageMod quando premo un pulsante nella barra degli strumenti. – seb68

Problemi correlati