Création de XMLHttpRequest à chaque requête sous IE
Bonjour,
J'ai fais mes premiers tests avec XMLHttpRequest aujourd'hui et je suis tombé sur un problème avec Internet Explorer. Voila déjà la fonction que j'utilise pour créer une instance de XMLHttpRequest :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| var xhr;
function newXHR()
{
// l'objet est crée dans la variable globale xhr
xhr = false;
// branch for native XMLHttpRequest object
if(window.XMLHttpRequest) {
try {
xhr = new XMLHttpRequest();
} catch(e) {
xhr = false;
}
// branch for IE/Windows ActiveX version
} else if(window.ActiveXObject) {
try {
xhr = new ActiveXObject('Msxml2.XMLHTTP');
} catch(e) {
try {
xhr = new ActiveXObject('Microsoft.XMLHTTP');
} catch(e) {
xhr = false;
}
}
}
}
function _evalueJavaScriptXHR()
{
if (xhr.readyState == 4) {
eval(xhr.responseText);
}
} |
Avec mes premiers tests le contenu entier du ficheir .js que j'utilisais était le suivant :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| var xhr;
// création de l'objet XMLHttpRequest dans la variable globale xhr
newXHR();
function newXHR() {...}
function _evalueJavaScriptXHR() {...}
function envoyeGetXHR(url)
{
if (xhr) {
xhr.onreadystatechange = _evalueJavaScriptXHR;
xhr.open('GET', url, true);
xhr.send(null);
}
} |
ensuite sur ma page j'appelle plusieurs fois la fonction "envoyeGetXHR" mais avec Internet Explorer seul la première exécution fonctionne alors qu'avec Firefox il n'y a pas de problème
J'ai donc modifier pour recréer l'objet à chaque appel
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| var xhr;
function newXHR() {...}
function _evalueJavaScriptXHR() {...}
function envoyeGetXHR(url)
{
// création de l'objet XMLHttpRequest dans la variable globale xhr
newXHR();
if (xhr) {
xhr.onreadystatechange = _evalueJavaScriptXHR;
xhr.open('GET', url, true);
xhr.send(null);
}
} |
Est ce que ce code ne vas pas poser de problème de remplissage de la mémoire ? Est ce qu'il y a une autre solution pour que cela fonctionne sous Internet Explorer ?
Re: Création de XMLHttpRequest à chaque requête sous IE
Citation:
Envoyé par mathieu
ensuite sur ma page j'appelle plusieurs fois la fonction "envoyeGetXHR" mais avec Internet Explorer seul la première exécution fonctionne alors qu'avec Firefox il n'y a pas de problème
La tu m'etonnes un peu quand même. Tu peux montrer la partie du code ou tu envoies l'ensemble de tes requetes? Parceque (bien utilisé) ça marche très bien sous IE aussi les XHR....