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 не был инициализирован правильно. Итак, я только что изменил загрузку скрипта от начала до конца. В моем случае это было возможно. Проблема исчезла...
Я не знаю, почему он появляется, но знаю решение и надеюсь, что это будет полезно для кого-то.