Rechercher : dans
Par :

[Javascript] Firefox et Opera VS Safari et IE

Dernière réponse le 12 jui 2008 à 21:16:50 SpoonS2K, le 12 jui 2008 à 13:13:42 
 Signaler ce message aux modérateurs

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
Configuration: Windows XP // Firefox 3.0 - IE7 - Opera 9 - Safari
OSX 10.4.11 // Firefox 3.0 - Safari 9 - Camino

Meilleures réponses pour « [Javascript] Firefox et Opera VS Safari et IE » dans :
[Webmaster] Afficher des PNG transparents dans IE 5.5 et IE 6 Voir Le problème Les PNG transparents permettent de faire de très beaux effets sur les pages web. Tous les navigateurs le supportent (Firefox, Opera, Konqueror, Safari, Camino...)... sauf Internet Explorer 5.5 et 6 ! (Internet Explorer 7, lui,...
Installer ou réinstaller Mac OS 10.5 VoirPréliminaire Les sauvegardes préalables éventuelles Les éléments à sauvegarder Mail Adresses du Carnet d’adresses Calendriers / Agenda Safari (signets) FireFox (signets) Trousseau d’accès Notes de l'Aide Mémoire iTunes iPhoto Séquenc
[Tutoriels] Tutoriels de logiciels VoirINTRODUCTION 1- Pour Windows en général 2- Sécurité Les antivirus Les pare-feux Les anti-spywares 3- Les navigateurs Web Firefox Opera Google Chrome 4- Les courrielleurs 5- Les nettoyeurs 6- Gravure
Télécharger AdBlock Plus VoirAdBlock Plus est l'une des extensions classiques de Firefox,celui-ci bloque déjà en standard les fenêtre popup: AdBlock va plus loin en supprimant les publicités désignée à l'intérieur des pages. Cette extension est capable de supprimer 99% des...

1

 SpoonS2K, le 12 jui 2008 à 21:16:50
  • +1

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

Répondre à SpoonS2K