Загрузка внешних js для «расширения» расширения firefox - PullRequest
0 голосов
/ 18 января 2012

Я работаю над расширениями Firefox, которые используют множество внешних сервисов, я хочу, чтобы файл .js для каждого из этих внешних сервисов размещался на моем сервере, а затем загружал каждый из них в расширение при необходимости.

Эти внешние js-файлы не являются "обычными js", которые выполняются в окне Firefox, они содержат код, который должен выполняться в контексте расширения, например, им нужно использовать Components.classes["@mozilla.org/embedcomp/prompt-service;1"].

* 1005.* Например:
var myExtensionName = {
    init: function() {

    },

    service1_func: function() {

    }
}

Я хочу иметь возможность загружать service1_Func из внешнего файла, и он должен работать так же, как если бы он был жестко закодирован в файлы расширений.Причина, по которой мне это нужно, заключается в том, что service1_Func нужно часто обновлять, и я не хочу обновлять полное расширение каждый раз.Я знаю, что это может создать некоторые риски для безопасности, но расширение не для распространения, но оно будет использоваться на более чем 20 компьютерах, поэтому для меня это будет самый простой способ его обслуживания.

Как можноЯ достигаю этого?

Английский не является моим основным языком, поэтому я надеюсь, что я хорошо объяснил себя, пожалуйста, задавайте комментарии с вопросами, если мне нужно кое-что прояснить.

1 Ответ

0 голосов
/ 19 января 2012

Предупреждение : это дыра в безопасности, не делайте этого в расширении, которое должны использовать другие люди!

Используйте XMLHttpRequest для загрузки файла JavaScript и Function конструктор для его «компиляции». Примерно так:

var request = new XMLHttpRequest();
request.open("GET", "http://example.com/func1.js");
request.addEventListener("load", function()
{
  myExtensionName.service1_func = new Function(request.responseText);
}, false);
request.send();

http://example.com/func1.js должен содержать тело функции (без окружения function() {}).

...