Как добавить / включить файл JS в XBL? - PullRequest
1 голос
/ 18 февраля 2011

Я прочитал и нашел способы добавить файл js в XBL, но эти методы не работают. Я пытался объявить тег: <'script src='test.js''> и <'script src='chrome://content/test.js '>, но никто не работал.

Метод внутри класса теста просто function caller() { alert("call succeeded"); }.

Существует ли правильный и простой способ включить файл js в XBL, поэтому вызов функций из файла работает так, как если бы функция была написана внутри XBL.

Ответы [ 2 ]

2 голосов
/ 18 февраля 2011

Вот еще несколько деталей: http://www.w3.org/TR/xbl-primer/#scripts То, что вы делаете, кажется, хорошо, вот пример, который они приводят:

<xbl xmlns="http://www.w3.org/ns/xbl">
  <script src="example.js"/>

Примечание xmlns тамэто пространство имен по умолчанию.Если вы определили это как: xmlns: xbl = "http://www.w3.org/ns/xbl", тогда вам придется использовать

<xbl:script src="example.js" />

Попробуйте, я сам никогда не пробовал, но эта вещь с пространством имен - распространенная ошибка.

РЕДАКТИРОВАТЬ: Боюсь, что это может быть невозможно. Это из спецификации XBL 2.0, и Gecko, кажется, еще не поддерживает его, а в скрипте XBL 1.0 тег делаетне существует:

http://groups.google.com/group/mozilla.dev.tech.xbl/msg/d7d4f279ebdad65f?pli=1 Здесь упоминается, что разработка должна быть в полном разгаре.

Вот ссылка, на которую они указывают: https://wiki.mozilla.org/XBL2, нокажется, что он не обновлялся с 2009 года, трудно сказать, будет ли он вообще реализован.

А вот ссылка на XBL 1.0, где вы можете увидеть, что тег script не существует: https://developer.mozilla.org/en/XBL/XBL_1.0_Reference

Но чтобы предложить возможную альтернативу - вы могли бы использовать модули, и в конструкторе сделать что-то вроде этого:

<constructor>
    Components.utils.import("resource://yourextension/config.js");

Для более подробной информации о модулях: https://developer.mozilla.org/en/JavaScript_code_modules и пример: https://developer.mozilla.org/en/JavaScript_code_modules/Using В основном вам нужно зарегистрировать папку с вашими модулямиВаш test.js в нем, следуйте инструкциям, как «экспортировать» функции / переменные из него.Затем вы можете импортировать его в любой файл JavaScript, XUL или XBL.

1 голос
/ 19 февраля 2011

XBL1 не поддерживает теги сценария. Лучшее, что вы можете сделать - это импортировать функции из модуля, когда они вам нужны.

...