3

これは部分的には回避策の要求であり、部分的にはInternet Explorerのプロトタイプの実装には問題があるとの警告を出そうとしています。Internet Explorer 8のプロトタイプとXMLHttpRequest

次のコードはInternet Explorerでは動作しません。

XMLHttpRequest.prototype.old = XMLHttpRequest.prototype.open; 
var x = new XMLHttpRequest(); 
x.old("POST", "test", false); 

IE 8ベータ版、および以前のすべてのバージョンでは、XMLHttpRequest.prototypeプロパティが最初に存在しませんでした。 IE8では、存在しますが、 "無効なプロシージャ呼び出しまたは引数"エラーが発生します。 Internet Explorerは装飾が好きではありません。

誰でもこの回避策を知っていますか?

更新は:

私が新しい機能およびコンストラクタでのXMLHttpRequestの全体を上書きし、その後XMLHttpRequest.js ALAラッパースクリプトを作成することができると指摘されてきました。プロトタイプの方法ははるかに短く、IE以外のブラウザでもそれを使用することをお勧めします。

+0

は、Microsoftにこれを報告したことがありますか? –

+0

まだありません。マイクロソフトのバグ報告チャンネルを把握するのに忍耐力を持っているかどうかはわかりません。 –

+0

私は急いでいないだろう、私はコメントなしで閉じたレポートを見たと思う。 – Ross

答えて

2

IE 8はXMLHttpRequestを認識しますが、関数として認識していないようです。アクティブなXオブジェクトはまだ動作しているようです。 window.XMLHtppRequestの存在をテストする代わりに、window.XMLHtppRequestの型をテストします。 OKの仕事をしているようです。

次のように私は私のGETリクエストを再コード:

FG.ajax.getxhr = function(){ 
var xhr; 
if (typeof window.XMLHttpRequest === 'function') { 
    xhr = XMLHttpRequest(); 
} 
else { 
    xhr = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
return xhr; 
関連する問題