2013-05-28 3 views
6

Мне не удалось добавить CSS в расширение Firefox. Вот мой код.Inject CSS в 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'), 

Я использую toolbar buttons от Erik Vold. contentStyleFile, похоже, не работает. Когда я нажимаю на кнопку, появляется диалоговое окно JQuery, но без файла css.

+1

Вопрос: почему * должен * он работает? [Документация на вкладке tab.attach() '] (https://addons.mozilla.org/en-US/developers/docs/sdk/latest/modules/sdk/tabs.html#attach%28options%29) doesn Не упоминайте опцию 'contentStyleFile'. –

+0

Итак, как вызвать библиотеку JQuery, когда я нажимаю кнопку на панели инструментов? Я просто хочу сделать простое диалоговое окно JQuery видимым. – seb68

+0

Используйте свой скрипт содержимого, чтобы вставить тег стиля в документ? –

ответ

2

Вы можете уйти с помощью PageMod, который принесет вам таблицу стилей и вы также можете ввести JavaScript.

Что-то подобное может работать:

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

Позже вы хотите, чтобы уничтожить эту PageMod, когда вы сделали с ним, чтобы они не просто висят вокруг приложенных к старым страницам.

pm.destroy(); 
+0

Благодарим за отзыв. Когда я помещаю 'include: tabs.activeTab.url,', он не работает. У меня уже есть 'var tabs = require ('sdk/tabs');'. Если я напишу 'include: '*'', он работает. Однако, можно вызвать pageMod, когда я нажимаю кнопку? – seb68

+0

Вам нужно добавить 'attachTo: [" existing "," top "],' к параметрам PageMod, которые вы передаете, иначе он будет ждать, пока вы перезагрузите страницу. –

+0

Спасибо. Он работает, но только на первой вкладке, которая была открыта, поэтому я ищу способ вызвать pageMod, когда я нажимаю кнопку на панели инструментов. – seb68

Смежные вопросы