begin process at 2012 05 29 12:32:34
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Javascript / DHTML / Ajax

 > 

JavaScript et le navigateur

 > 

Problème de compatibilité

 > 

[Javascript] Firefox et Opera VS Safari et IE


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

[Javascript] Firefox et Opera VS Safari et IE

samedi 12 juillet 2008 à 15:15:04 | [Javascript] Firefox et Opera VS Safari et IE

SpoonS2K

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
samedi 12 juillet 2008 à 15:24:30 | Re : [Javascript] Firefox et Opera VS Safari et IE

bultez

Membre Club


Bonjour,

>>je m'aperçois qu'il a des différences entre les divers navigateurs qui existent...
doux euphémisme... hélas.

>> xhr.onload=maj;
    ?? étonné que ça baigne avec FF d'ailleurs !
    c'est pour le xml "normalement" ( mais qu'y a-t-il de normal ? ) pas pour ajax

tu utilises la méthode asynchrone : xhr.open("GET","progress.php?progress_key="+idProgress,true);

il faut attendre la réponse du serveur, et pas avec onload.
          xhr..onreadystatechange = function()
                {    if(xml.readyState == 4)
                     {    la réponse a été reçue...   reste à tester si status==200
                                                              et faire le boulot

sans préjuger du reste ( pas regardé )



                Cordialement            Bul         [mon Site]     [M'écrire]
samedi 12 juillet 2008 à 15:25:30 | Re : [Javascript] Firefox et Opera VS Safari et IE

bultez

Membre Club
il fallait lire    {    if(xhr.readyState == 4)     "bien entendu" !

                Cordialement            Bul         [mon Site]     [M'écrire]
samedi 12 juillet 2008 à 16:28:47 | Re : [Javascript] Firefox et Opera VS Safari et IE

SpoonS2K

J'ai procédé comme tu m'as dis, mais je suis pas vraiment convaincu puisque maintenant ca ne fonctionne plus nulle part

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

samedi 12 juillet 2008 à 20:25:34 | Re : [Javascript] Firefox et Opera VS Safari et IE

SpoonS2K

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
dimanche 13 juillet 2008 à 14:12:49 | Re : [Javascript] Firefox et Opera VS Safari et IE

bultez

Membre Club

pas suivi...

tu veux afficher la progression ?
     ne teste pas  xhr.readyState == 4 alors, ça veut dire que c'est fini.
   de toutes manières FF te "rend" le main entre deux, pas IE.
ou alors tu as un problème de cache ?
    ajoute '?'+new Date() derrière l'url



                Cordialement            Bul         [mon Site]     [M'écrire]
dimanche 13 juillet 2008 à 16:54:18 | Re : [Javascript] Firefox et Opera VS Safari et IE

SpoonS2K

En fait xhr.open lit un fichier texte qui est mis a jour toute les secondes, d'ou l'interet de if (percent!=100) { getstatus(); } . Dans mon fichier il ya la valeur percent et je veux que mon script tourne en boucle en relisant le fichier texte tant que percent n'est pas égal à 100
dimanche 13 juillet 2008 à 16:56:01 | Re : [Javascript] Firefox et Opera VS Safari et IE

SpoonS2K

Et j'ai essayé en rajoutant +newDate() ca change rien
dimanche 13 juillet 2008 à 18:19:44 | Re : [Javascript] Firefox et Opera VS Safari et IE

bultez

Membre Club

xhr.open("GET", "progress.php?progress_key="+idProgress+'&'+new Date(), true);
et je répète... IE ne rend la main qu'à la fin du traitement php.


                Cordialement            Bul         [mon Site]     [M'écrire]
dimanche 13 juillet 2008 à 18:23:53 | Re : [Javascript] Firefox et Opera VS Safari et IE

bultez

Membre Club
if (percent!=100) { getstatus(); }
et tu refais pas le xhr.send(null); ?
on ne rappelle pas donc le php.

                Cordialement            Bul         [mon Site]     [M'écrire]

1 2 3

Cette discussion est classée dans : var, document, xhr, xmlhttprequest, getelementbyid


Répondre à ce message

Sujets en rapport avec ce message

ajax/xmlhttprequest [ par David_monchy ] salut à tous,je développe un chat, et j'ai un problème: j'utilise une liste de connectés qui affiche en 'temps reel' les membres connectés. Seulement, Problème avec XMLHTTPRequest ! [ par nicomilville ] Salut,Et oui, c'est encore moi, vous devez vous dire que je suis un gros nul !Peut être, peut être pas !Je reviens vous voir car je dois finir un chat Encore des erreurs ! [ par nicomilville ] Salut,Et oui, c'est encore moi, vous devez vous dire que je suis un nul, c'est peut être vrai, lol J'ai encore des erreurs sur mon code... Si ça co probleme de mise en forme avec insertion balise [ par G4uthier ] Bonjour, voila mon probleme, je voudrais inserer des nouveaux champs de formulaire comme ceci: :Property Image Grace a ma fonction javascript mais Lancer une fonction après la fin d'exécution d'une autre fonction [ par bm3w325i ] Bonjour,Actuellement j'ai un input qui lors d'un Onclick se rempli par des coordonnées GoogleMaps, un fois rempli je récupère les données pour les aff [déplacé Bar -> JS] tableaux [ par nabilwael ] Bonjour,j'ai ce fichier js :var i = 0;    function create_champ(){    if(i        document.getElementById('champs').innerHTML += " Name</label&gt Problème de Popup-Tooltip [ par whiteange ] Bonjour à tous,Voilà, j'ai un petit problème avec un simili poup-tooltip. Sur une page, l'utilisateur clique sur une image, ceci appel alors une fonct envois de formulaire ajax [ par Annadrill ] bonjour,voilà, j'aimerais modifier la fonction que je vous mets la dessous, de manière a pouvoir l'utiliser avec n'importe quel formulaire, en précisa Accés à une page via user et mot de passe avec ajax et php [ par developvbdebut ] BonsoirVoici mon problème.Au départ je suis sur la page index.html, en saissant le bon nom utilisateur et le mot de page, je veux acceder à la page su calculer via un formulaire [ par cedcyr ] bonjour je vien de realiser un formulaire lier a code javascript il n'y a apparament pas d'erreur et pourtant la boucle ne se fait pas pourquoi voici


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,217 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales