J'ai un problème particulièrement délicat avec AJAX, qui fonctionne bien dans IE7 et Firefox, mais pas dans IE6.Comment puis-je ajouter des propriétés à un objet dans IE6?
Je dispose d'un framework AJAX très simple, qui nécessite d'étendre l'objet XMLHttpRequest (ou dans le cas d'IE, le XMLHttpRequest ActiveXObject) en ajoutant quelques propriétés. section pertinente du code est le suivant:
//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";
Le problème semble être que FF et IE7 permettent l'extension d'un objet de cette façon, mais IE6 ne le fait pas (il se plaint que « L'objet ne prend pas en charge cette propriété ou méthode "). J'ai essayé d'utiliser la propriété "prototype" et diverses méthodes de l'héritage "réel", mais je n'arrive pas à comprendre ce qui se passe avec IE6
Ok, mais je ne comprends toujours pas pleinement à JS, var/scope méthode particulièrement le « ce » var - il est une petite bête étrange. Supposons que j'ai un objet wrapper, et une méthode de cet objet crée la requête, comment je définirais la fonction onreadystatechange, et comment ferait-il référence à l'emballage (ceci?) – Graza
Oui, 'ceci' est un petit mot. Voir http://stackoverflow.com/questions/585840/x/585918#585918 pour plus d'informations sur le fonctionnement de * effectivement *. Vous voudriez créer une méthode liée sur le callback de votre wrapper, puis définissez le paramètre onreadystatechange sur celui-ci. – bobince