2013-05-28 9 views
6

Nie udało mi się wstrzyknąć CSS w rozszerzenie firefox. Oto mój kod.Inject CSS w firefox dodaj na 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'), 

używam toolbar buttons Erik Vold. contentStyleFile wydaje się nie działać. Kiedy klikam przycisk, pojawia się okno dialogowe JQuery, ale bez pliku css.

+1

Pytanie: dlaczego * powinien * działa? [Dokumentacja na 'tab.attach()'] (https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/tabs.html#attach%28options%29) doesn wspomnieć o dowolnej opcji 'contentStyleFile'. –

+0

Jak wywołać bibliotekę JQuery po kliknięciu przycisku paska narzędzi? Chcę tylko, aby widoczne było proste okno dialogowe JQuery. – seb68

+0

Użyj skryptu treści, aby wstawić tag stylu do dokumentu? –

Odpowiedz

2

Możesz uciec się przy użyciu PageMod, która przyniesie pożądany arkusz stylów, a także może wstrzyknąć JavaScript.

Coś takiego może działać:

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

Później będziemy chcieli zniszczyć PageMod kiedy skończysz z nim, więc nie są one po prostu kręci przywiązany do starych stron.

pm.destroy(); 
+0

Dziękuję za odpowiedź. Kiedy umieszczam 'include: tabs.activeTab.url,', to nie działa. Mam już 'var tabs = require ('sdk/tabs');'. Jeśli napiszę 'include: '*'', to działa. Jednak po kliknięciu przycisku można wywołać funkcję pageMod? – seb68

+0

Musisz dodać 'attachTo: [" existing "," top "],' do opcji PageMod, które przełączysz, w przeciwnym razie będzie czekać, aż ponownie załadujesz stronę. –

+0

Dziękuję. Działa tylko na pierwszej otwartej karcie, dlatego szukam sposobu wywołania pageMod po naciśnięciu przycisku na pasku narzędzi. – seb68

Powiązane problemy