2012-01-02 15 views
9

私はFireFox-Extensionを作成しており、サーバーからデータをロードしたいと思います。私はXMLHttpRequestを初期化しようとすると、しかし:Firefox拡張のXMLHttpRequest

var request = new XMLHttpRequest(); 

エラーコンソール言う:

ReferenceError: XMLHttpRequest is not defined 

私はXMLTttpRequestが認識されないか、なぜ何かを含める必要がありますか?

+1

の詳細情報は、JavaScriptのモジュール内のコードですが?もしそうなら、https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Using_XMLHttpRequest_from_JavaScript_modules_.2F_XPCOM.C2.A0コンポーネントを見てください –

+0

こんにちはフェリックス!私は関数内のmain.jsでそれを使用しています。しかし、私があなたのやり方をすると、アドオンビルダーは「xpiファイルはコピーできません」と言います... – SteMa

+0

新しいアドオンSDKを使用していますか?もしそうなら、私はまだそれで働いていないので、私はあなたを助けることができません。ごめんなさい。 –

答えて

10

(アドオンビルダを使用して間接的に使用している)アドオンSDKは、基本的にXMLHttpRequestのラッパーであるrequest packageを提供します。使用する必要があります。あなたが理解しているところでは、要求が実行されている間にアドオンがアンインストール/無効にされている場合、問題を防ぐために直接XMLHttpRequestアクセス権が与えられていません。

1

ウラジミールの答えがそのような場合の大部分に役立つと思われます。しかしもう一つのケースがある。

私はFirefoxの16の奇妙な下にこのエラーの問題を解決しようとトリスページを見つけたが、私はFirefoxの15

の下で、このエラーを見たことがない私は上のコンテンツのスクリプトにこのエラーを持っています一部ページ。スクリプトは開始時に注入されました:

contentScriptWhen : "start", 

場合によっては、ウィンドウオブジェクトが正しく初期化されていないようです。だから、スクリプトの読み込みを最初から最後まで変更しました。私の場合は可能でした。問題は消えてしまった...

私はなぜそれが現れているのか分かりませんが、それは誰かにとって有益な解決策と希望を知っています。

あなたはXPCOMコンポーネントのコンストラクタを追加すべきであるXMLHttpRequestのコンストラクタを使用するための
3

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

以降:

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

MDN

関連する問題