IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Exécution Javascript en bloc


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Exécution Javascript en bloc
    Bonjour,

    Je travaille sur une carte sur laquelle on déplace un bonhomme. Afin d'éviter les bourrinage de lien sur une des flèches de déplacement je donne la fonction javascript suivante sur la <div id="test"> qui contient l'image onclick=deplacement().

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function deplacement() {
     
    document.GetElementById('test').style.backgroundColor = "gold";
    SetInnerHTML(.....); --> actualise la carte dans une div
    document.GetElementById('test').style.backgroundColor = "green";
    }
    La fonction SetInnerHTML est assez lente à executer d'ou mon changement de couleur pour montrer un avant et un après. Le problème reste que je clique, j'attends (surement le chargement de setinnerhtml) et paf! il m'execute les 3 fonctions...

    Je souhaiterai qu'il fasse la chose suivante sur clic:

    - passage en "gold"
    - chargement et affichage de la carte
    - passage en "green"

    Actuellement il fait:

    - chargement
    - passage en "gold", affichage de la carte, passage en "green"

    Merci d'avance de votre aide.

  2. #2
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Voici le contenu de la fonction SetInnerHTML():

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    setInnerHTML = function(divContent, HTML) {
    divContent.innerHTML=HTML;
    var All=divContent.getElementsByTagName("*");
    for (var i=0; i<All.length; i++) {
    All[i].id=All[i].getAttribute("id")
    All[i].name=All[i].getAttribute("name")
    All[i].className=All[i].getAttribute("class")
    }
    var AllScripts=divContent.getElementsByTagName("script")
    for (var i=0; i<AllScripts.length; i++) {
    var s=AllScripts[i];
    if (s.src && s.src!="") {
    // Précédement asynchrone, mis en synchrone pour éviter des problčmes de dépendances de scripts
    eval(getFileContent(s.src))
    }
    else {
    eval(s.innerHTML)
    }
    }
    }
     
    var pickRecentProgID = function (idList){
     
    var bFound = false;
    for(var i=0; i < idList.length && !bFound; i++){
    try{
    var oDoc = new ActiveXObject(idList[i]);
    o2Store = idList[i];
    bFound = true;
    }catch (objException){
     
    };
    };
     
    if (!bFound)
    throw ("Aucun ActiveXObject n'est valide sur votre ordinateur, pensez mettre jour votre navigateur");
    idList = null;
     
    return o2Store;
    }
     
    // Retourne un nouvel objet XmlHttpRequest
    var GetXmlHttpRequest_AXO=null;
    var GetXmlHttpRequest=function () {
    if (window.XMLHttpRequest) {
    return new XMLHttpRequest()
    }
    else if (window.ActiveXObject) {
    if (!GetXmlHttpRequest_AXO) {
    GetXmlHttpRequest_AXO=pickRecentProgID(["Msxml2.XMLHTTP.5.0", "Msxml2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP"]);
    }
    return new ActiveXObject(GetXmlHttpRequest_AXO)
    }
    return false;
    }
     
     
    getXhr=GetXmlHttpRequest;
     
    function getFileContent(url) {
    var Xhr=GetXmlHttpRequest();
    Xhr.open("POST",url,false);
    Xhr.send(null);
    return Xhr.responseText;
    }
    Après pas mal de recherches sur ajax le pb viendrait de:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Xhr.open("POST",url,false);
    Ajax est en mode synchrone ce qui expliquerait l'éxécution après attente de toutes mes fonctions. Si je le passe en "true" pour asynchrone la fonction SetInnerHTML() ne fonctionne plus :/

    Si quelqu'un a une idée je suis preneur, merci!

  3. #3
    Membre averti
    Inscrit en
    Novembre 2006
    Messages
    336
    Détails du profil
    Informations forums :
    Inscription : Novembre 2006
    Messages : 336
    Points : 374
    Points
    374
    Par défaut
    Tu as trouvé ou ce code

    Tout est mélangé, y'a des éval qui ne servent à rien, la partie Ajax et la répercution sont dans la même fonction !

    Et ça :

    Aucun ActiveXObject n'est valide sur votre ordinateur, pensez mettre jour votre navigateur
    C'est pas ce qu'on appelle un message user friendly

    Je pense que tu devrais séparer l'ajax du reste avant toute chose

Discussions similaires

  1. fckeditor : erreur d'exécution Javascript
    Par amoussa dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 5
    Dernier message: 26/11/2008, 09h33
  2. Exécution javascript : problème de crossScripting
    Par DlaYR dans le forum Intégration
    Réponses: 0
    Dernier message: 02/09/2008, 14h41
  3. [AJAX] Exécution Javascript dans XSL (FireFox)
    Par mchaz84 dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/03/2007, 08h48
  4. Impossible d'exécuter javascript
    Par AzertyH dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 18/10/2006, 18h15
  5. Réponses: 6
    Dernier message: 22/09/2005, 16h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo