В настоящее время я переписываю расширение firefox для внутреннего использования в моей компании.Я начал с перемещения большей части логики во внешний js-файл, загруженный с помощью тега script внутри оверлея xul.(Нам было трудно заставить наших сотрудников постоянно обновляться, поэтому я подумал, что смогу обойти это).Он работал нормально так:
<overlay id="my-overlay"
xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"
xmlns:html="http://www.w3.org/1999/xhtml">
<script type="application/x-javascript" src="https://my.company.com/path/to/jquery.min.js/>
<script type="application/x-javascript" src="https://my.company.com/path/to/toolbar/main.js"/>
<toolbox id="navigator-toolbox">
<!-- some stuff here -->
</toolbox>
Но тогда у меня возникла безумная идея динамически загружать файл сценария, чтобы я мог использовать настройки, чтобы определить, будет ли он загружаться с рабочих серверов.или альфа / бета серверы.И вот тогда я потерпел неудачу.
Я безуспешно пытался сделать следующее:
- $. Ajax ({dataType: 'script', ...}) // появляетсяабсолютно ничего не делать
- $ ('overlay'). appendChild ('', {src: ...}) // тег сценария добавлен, но не выполнен
- document.createElementNSи т. д. // тег сценария добавляется, но не выполняется
- Components.utils.import // не принимает протокол http
- mozIJSSubScriptLoader // не принимает протокол http
Я не пытался Components.utils.evalInSandbox
, но, учитывая его ограничения, я боюсь, что это потребовало бы значительных других изменений кода, которые не стоили бы небольшого упрощения цикла разработки.
СЧитая гораздо больше документации и ошибок Mozilla, кажется, что в основном я пытаюсь решить различные проблемы безопасности (я понимаю в принципе, но, конечно, в моем случае, я полностью контролирую оба конца).
Вещь, которая беспокоитмне кажется, что он работает нормально, пока я жестко кодирую тег сценария, но происходит сбой только после того, как я пытаюсь его динамически сгенерировать.Должен ли я просто бросить полотенце или кто-то знает, как сделать эту работу?