Как передать аргумент в модуль Javascript? - PullRequest
1 голос
/ 05 мая 2011

Я хочу использовать Javascript Module (JSM) в одном окне моего приложения Xul, чтобы я мог загружать ресурс по мере необходимости.

Но мне нужнопередать окно в JSM, и я не знаю, как это сделать.Следую за моей попыткой:

В моем resource.jsm :

var EXPORTED_SYMBOLS = ["hello"];

function hello(win) {
    win.alert("ALERT FROM JSM!");
}

звоню в мое окно с:

Components.utils.import("resource://module/resource.jsm");
hello(window);

, но я получаю:

выигрыш не определен

в resource.jsm.

Есть идеи, как заставить его работать?

1 Ответ

0 голосов
/ 05 мая 2011

Возможно, проблемы вызваны тем, что вы назвали параметр для вашей hello функции равным window.Хотя окно не является зарезервированным словом, большинство браузерных сред воспринимают его как неопределяемую константу.Попробуйте:

function hello( obj ) {
    obj.alert("ALERT FROM JSM!");
}

в вашем модуле и затем вызовите его с помощью hello(window), hello(document.window) или hello(this)


После прочтения документации модуля Javascript это выглядит следующим образомвам нужно создать объект внутри модуля, а затем изменить его свойство по ссылке.Итак, в вашем JSM:

var EXPORTED_SYMBOLS = ["params", "hello"];

params = {
  win: this
};

function hello() {
    params.win.alert("ALERT FROM JSM!");
}

Затем вы вызываете, сначала назначая окно этому параметру, а затем вызывая функцию:

Components.utils.import("resource://module/resource.jsm");
params.win = window;
hello();

Примечание: я недостаточно знаком сJSM знают, есть ли лучший способ сделать это, но это должно сработать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...