XMLHttpRequest в расширении Firefox

Я пишу FireFox-расширение и хочу загрузить данные с сервера. Но когда я пытаюсь инициализировать XMLHttpRequest с помощью:

var request = new XMLHttpRequest();

консоль ошибок говорит:

ReferenceError: XMLHttpRequest is not defined

должен ли я включать что-то или почему XMLTttpRequest не распознается?

3 ответов


дополнительный SDK (который вы используете косвенно через Add-on Builder) предоставляет request пакета это по существу обертка вокруг XMLHttpRequest, вы должны использовать его. Из того, что я понимаю, вам не дают прямой XMLHttpRequest доступ для предотвращения проблем, если надстройка удалена / отключена во время выполнения запроса.


для использования конструктора XMLHttpRequest необходимо добавить конструктор компонента XPCOM:

const XMLHttpRequest  = Components.Constructor("@mozilla.org/xmlextras/xmlhttprequest;1", "nsIXMLHttpRequest");

и после:

// some code
var req = new XMLHttpRequest();
// some code

подробнее о MDN


Кажется, что ответ Владимира полезен для большинства таких случаев. Но есть еще один случай.

Я нашел страницу tris, пытающуюся решить проблему с этой ошибкой в Firefox 16. Странно, но я никогда не видел эту ошибку в Firefox 15.

У меня есть эта ошибка в скрипте контента на некоторые страницы. Сценарий был введен в начале:

contentScriptWhen : "start",

похоже, что в некоторых случаях объект window не был инициализирован правильно. Итак, я только что изменил загрузку скрипта от начала до конца. В моем случае это было возможно. Проблема исчезла...

Я не знаю, почему он появляется, но знаю решение и надеюсь, что это будет полезно для кого-то.