Дополнения Mozilla FireFox -> Включить внешнюю библиотеку в main.js

Мне нужно импортировать/включить файл javascript в мой main.js в моем аддоне FireFox, но, поскольку main.js не содержит «документа», я не могу вставить его обычным/простым способом.

Я пробовал некоторые вещи, но никогда не работал.

Вот что я точно хочу сделать: я использую скрипт определения внешнего часового пояса (https://bitbucket.org/pellepim/jstimezonedetect/overview). Мне нужно определить часовой пояс в main.js, чтобы загрузить файл календаря Google + преобразовать время в часовой пояс пользователей. Это нельзя сделать позже! До сих пор я просто вставлял код в файл вручную (копировать+вставить), но это не очень хороший и понятный способ сделать это.


person Shadowlauch    schedule 23.05.2013    source источник


Ответы (2)


Вам нужно будет создать модуль CommonJS. Добавьте файл .js в папку lib аддона и экспортируйте все функции, которые вам понадобятся, с помощью директивы «exports». Как только вы это сделаете, вы сможете использовать экспортированные функции с помощью директивы «require».

Например, в модуль, который вы будете использовать повторно, вы можете поместить:

// REUSABLE MODULE
exports.somefunction = somefunction;

function somefunction() {
    doSomething();
 }

А затем в модуле, который будет использовать это:

var othermodule = require("reusable_module");
othermodule.somefunction();

Вот соответствующая документация: https://addons.mozilla.org/en-US/developers/docs/sdk/latest/dev-guide/guides/modules.html

person Ivan Alagenchev    schedule 11.11.2013

обновление 2020:

Поскольку я столкнулся с этим сам, и, поскольку требование, кажется, не работает, это, похоже, работает: (импорт стиля ES6)

Внутри манифеста замените скрипт такой страницей:

"background": {
    "page": "background.html"
  }

создайте файл background.html и добавьте

<script type="module" src='./background.js'></script>

теперь внутри вашего файла js вы можете использовать другие файлы, используя импорт ES6

import * as [name] from "[location]"
person Gabriel H    schedule 27.07.2020