[Javascript] Firefox et Opera VS Safari et IE

Fermé
SpoonS2K Messages postés 13 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 12 juil. 2008 à 13:13
SpoonS2K Messages postés 13 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 - 12 juil. 2008 à 21:16
Bonjour,

après moultes recherches et avoir tourné le truc dans tout les sens, je m'en remet à vous. Je débute dans le Javascript, et dèja je m'aperçois qu'il a des différences entre les divers navigateurs qui existent...

J'ai un script qui est censé utiliser XMLHttpRequest pour récuperer des données a partir
d'un script PHP, et ensuite mettre à jour ma page sans rechargement.

Mon script fonctionne impec sous Firefox, sous Opera, mais impossible de lui faire savoir quoi que ce soit sous Internet Explorer et Safari (Mac et PC).

Je deviens fou, voici mon code:

function recup() { 
	var idProgress=document.getElementById("progress_key").value;
	var xhr= null;

	if(window.XMLHttpRequest) 
	xhr = new XMLHttpRequest();
	else if(window.ActiveXObject) 
	xhr = new ActiveXObject("Microsoft.XMLHTTP");
	else { 
	alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
	return;
}
	
	xhr.open("GET","progress.php?progress_key="+idProgress,true);
	xhr.send(null);
	xhr.onload=maj;
}

function maj() { /*rappel objet xmlHttpRequest */

	var repXhr=this.responseText; //récupération de la réponse du serveur via l'objet xmlHttpRequest (this)

	if (this.readyState == 4) { 
	var objRep=eval('('+repXhr+')');
	}

	
	document.getElementById("sec").innerHTML=objRep.est_sec+" secondes restantes";
	var i = objRep.bytes_uploaded;
	var j = objRep.bytes_total;
	var percent = Math.ceil(i*100/j);
	var pix = percent*300/100;

	document.getElementById("p_pc").innerHTML=percent+"%";
	document.getElementById("p_barre").style.width=parseInt(pix)+"px"; 
	if (percent!=100) { recup(); }
}


Merci à vous
            
                
A voir également:

1 réponse

SpoonS2K Messages postés 13 Date d'inscription samedi 12 juillet 2008 Statut Membre Dernière intervention 17 juillet 2008 1
12 juil. 2008 à 21:16
Bon je reviens à la charge... J'ai réécris completement mon code, ca marche impec sur Firefox et Opera.
function getstatus() {

    var xhr = null;

    if(window.XMLHttpRequest) // Firefox
    xhr = new XMLHttpRequest();
    else if(window.ActiveXObject) // Internet Explorer
    xhr = new ActiveXObject("Microsoft.XMLHTTP");
    else { // XMLHttpRequest non supporté par le navigateur
    alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
    return;
}

var idProgress = document.getElementById("clef").value;

xhr.open("GET", "progress.php?progress_key="+idProgress, true);
xhr.onreadystatechange = function() {
    if(xhr.readyState == 4) {
        if(xhr.status == 200) {

        var tmp=xhr.responseText;
        var reponse=eval('('+tmp+')');
       
        var b_up = reponse.bytes_uploaded;
        var b_tot = reponse.bytes_total;
        var percent = Math.ceil(b_up*100/b_tot);
        var pixel = percent*300/100;
       
        document.getElementById("sec").innerHTML = reponse.est_sec+" secondes restantes";
        document.getElementById("p_pc").innerHTML = percent+"%";
        document.getElementById("p_barre").style.width=parseInt(pixel)+"px";
        document.getElementById('rep').style.display = '';
        if (percent!=100) { getstatus(); }
        }
    }
}

xhr.send(null);

}


Seulement Internet Explorer m'affiche bien les reponses que je veux mais une seule fois... En fait on a l'impression qu'il bloque sur if (percent!=100) { getstatus(); }, il ne réécute pas le script, et IE plante... Quant a Safari ca ne fonctionne pas du tout... Si vous avez une idée du pourquoi du comment, je suis preneur

Merci
1