Как сослаться на файл в каталоге данных расширения Firefox?

Я работаю над расширением Firefox, и мне нужно внедрить JavaScript на страницу из скрипта содержимого. В моем расширении Chrome я сделал следующее:

this.initializeJplayerSupport = function() {
  var script = document.createElement('script');
  script.setAttribute('type', 'application/javascript');
  script.setAttribute('src', chrome.extension.getURL('js/custom-jplayer.js'));
  document.head.appendChild(script);
}

Файл находится в моем каталоге данных. Как я могу сослаться на файл js в сценарии содержимого расширения Firefox (где я использовал chrome.extension.getURL() для Chrome)?


person PeeHaa    schedule 18.07.2012    source источник


Ответы (2)


Если вы находитесь в main.js в надстройке на основе SDK, вам требуется и используется помощник «data» из объекта «self»:

var data = require('self').data;

console.log(data.url('somefile.js')); // prints the resource uri to the file.

Для получения дополнительной информации:

https://developer.mozilla.org/en-US/Add-ons/SDK/High-Level_API/self#data

Как только вы получите этот uri ресурса, вы можете передать его в скрипт контента, используя self.postMessage или self.port.emit:

https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts

person therealjeffg    schedule 19.07.2012
comment
Это в основном сценарии, а не в контенте? или я ошибаюсь? - person PeeHaa; 19.07.2012
comment
Это в основном скрипте, main.js, да. - person therealjeffg; 19.07.2012
comment
Как я могу сослаться на файл js в плагине firefox contentscript. Возможно ли это или я неправильно смотрю на это? - person PeeHaa; 19.07.2012
comment
добавил больше к ответу. извините за путаницу! - person therealjeffg; 19.07.2012
comment
Спасибо за вашу помощь до сих пор проверю это сегодня вечером, когда я вернусь домой. - person PeeHaa; 19.07.2012
comment
извините, я по ошибке проголосовал против, ответ полезен. :( - person Suneesh; 22.04.2014
comment
Спасибо. Но как я могу ссылаться на файлы, содержащиеся в каталоге data/ плагина, из сценария содержимого, а не из основного сценария расширения? - person davide; 25.09.2014
comment
Используя относительные пути, например, из ./data/index.html, чтобы ссылаться на ./data/css/style.css, вы бы просто сделали ./css/style.css - person therealjeffg; 29.09.2014

Похоже, что начиная с Firefox 38 cfx был заменен на jpm.

Возможно, поэтому эта строка не работала для меня:

var data = require('self').data;

Мне просто пришлось немного переписать его:

var data = require('sdk/self').data;
person customcommander    schedule 13.07.2015