私はIE7とFirefoxではうまく動作するが、IE6ではうまく動作しないAJAXを使用して、特にトリッキーな問題を抱えています。IE6のオブジェクトにプロパティを追加するにはどうすればよいですか?
私は、いくつかのプロパティを追加して、XMLHttpRequestオブジェクト(またはIEの場合はXMLHttpRequest ActiveXObject)を拡張する必要がある、非常に単純な自家製AJAXフレームワークを持っています。次のようにコードの関連セクションは次のとおりです。
//the following is the constructor for our ajax request object - which extends the standard object. It is used in the method below it
function FD_XMLHttpRequest() {
var xmlHttpReq = false;
if (window.XMLHttpRequest) { // Mozilla/Safari
xmlHttpReq = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
}
//we now have the request object - extend it with things we might need to store with it
xmlHttpReq.onReturnFunc = null; //******ERROR IN IE6******
xmlHttpReq.targetDivId = null; //******ERROR IN IE6******
return xmlHttpReq;
}
//To use:
myXHReq = new FD_XMLHttpRequest();
myXHReq.onReturnFunc = someFunction;
myXHReq.targetDivId = "myDiv";
問題はFFとIE7は、このようにオブジェクトを拡張できるようにということのようですが、IE6は(それはオブジェクトは、このプロパティまたはメソッドをサポートしていない」と文句を言いいません")。私は "プロトタイプ"プロパティと "実際の"継承のさまざまなメソッドを使用しようとしましたが、私はIE6で何が起こっているのかを頭に浮かべることはできません
[OK]を、私はまだ完全にはVAR/JSのメソッドスコープ、特に「この」VARを理解していない - それはです奇妙な小さな獣。私はラッパーオブジェクトを持っていると仮定し、そのオブジェクトのメソッドが要求を作成すると、どのようにonreadystatechange関数を定義し、ラッパー(これ?)をどのように参照するのでしょうか? – Graza
ええ、 'これは少し芝生です。実際の*動作の詳細については、http://stackoverflow.com/questions/585840/x/585918#585918を参照してください。ラッパーのコールバックにバインドされたメソッドを作成し、それにonreadystatechangeを設定するとします。 – bobince