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 :

[DOM] Executer une fonction


Sujet :

JavaScript

  1. #1
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut [DOM] Executer une fonction
    Comment exécuter une fonction a chaque requête envoyé au serveur. En d'autre terme à chaque construction du DOM.

    Merci

  2. #2
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    heu tu appels ta fonction simplement ....

    mafonction();

    si c'est de l'ajax idem ...
    en retour ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <script type="text/javascript>mafonction()</script>"
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  3. #3
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    J'ai essayé ça mais ca marche pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function taille() {
     
     largeur= document.body.clientWidth;			
     document.getElementById("formTopBouton:panelMainDataTable1").style.width=largeur-600+'px';
     
    }
      window.onload = taille;  // exécuté à chaque reload
      taille();
    Le width s'applique au démarrage, mais dés que je clique sur un bouton, il prend une autre largeur


    J'ai essayé aussi d'appeler ma méthode sur le onclick du bouton sur lequel j'ai cliqué. Mais le problème c'est que la fonction est exécuté (le width est bien mis à jour) mais directement après il y a la reconstruction du DOM par le serveur qui change ce dernier (la largeur biensur).

    Je sais pas si vous avez compris mon soucis ?

    Toute idée sera la bienvenue

  4. #4
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    heu il font quoi tes boutons ??


    et ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
      window.onload = taille;  // exécuté à chaque reload
      taille();
    tu associes au load ta méthode , puis tu la ré-appel ?
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  5. #5
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Je t'explique ce que je voudrais faire.

    Je voudrais appliquer une certaine largeur à un panelgroup (un div). Pour cela j'utilise la méthode taille qui permet de définir la largeur du panelgroup.

    Je voudrais appliquer ce script lors de chaque construction du DOM.
    Pour cela la méthode window.onload m'a arrangé au début car elle applique le script sur le load de la vue. Mais j'ai remarqué après que cette façon est inapproprié dans mon cas de figure. Car au fait, j'ai deux boutons qui me permettent de cacher des panelgroup (div), quand je cache ces derniers, automatiquement le DOM est reconstitué est la largeur que j'avais définit dans taille() est ignoré. C'est pour cela que j'ai rajouté taille(); croyant que ça pourra causé l'appel de la méthode à chaque reconstitution du DOM. Mais je me suis vite rendu compte que onload = taille; et taille() réfère à la même chose ...


    Maintenant ce que je souhaite, c'est que mon width ne soit pas changé après le clique sur l'un des boutons et au cas ou c'est pas possible, forcer l'appelle de la méthode taille() pour mettre à jour ce dernier.

    Merci

  6. #6
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    sur tes boutons ( SI TA METHODE TAILLE FONCTIONNE DE BASE )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input type="button" value="click ici" onclick="premiereMethode();taille();" />
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  7. #7
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Merci pour ta réponse,

    Moi j'utilise un framework JSF, donc quand je clique sur le bouton je lance un actionListener qui exécute une méthode de mon bean, j'ai mit après un onclick mais le onclick désactive mon actionlistener

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <ice:commandLink  actionListener="#{orderBook.hideLegendeView}"
    	       		 onclick="taille();">

  8. #8
    Expert confirmé
    Avatar de le_chomeur
    Profil pro
    Développeur informatique
    Inscrit en
    Février 2006
    Messages
    3 653
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Février 2006
    Messages : 3 653
    Points : 4 835
    Points
    4 835
    Par défaut
    je ne connais pas ce framework mais en essayant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    actionListener="#{orderBook.hideLegendeView,taille}"
     
    ou 
     
    actionListener="#{orderBook.hideLegendeView,orderBook.taille}"
    ... ?
    est ton ami fait gagner du temps à ceux qui aident , donc un message avec la balise résolu laisse plus de temps pour résoudre d'autres problèmes

    Premier ministre du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts )

  9. #9
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    Non c'est une fausse syntaxe, au fait, dans le bean on dispose d'une méthode hideLegendeView(ActionEvent) qui est appelée automatiquement après le clique.

    Mais j'ai une idée que je vais implémenter. en effet, je peux appeler du Javascript depuis mon bean Java grâce au Context JSF

    Je vous tiens au courant

    Merci

  10. #10
    Membre actif
    Inscrit en
    Juillet 2007
    Messages
    456
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 456
    Points : 231
    Points
    231
    Par défaut
    voila ça marche, j'appelle donc ma fonction javascript après le traitement du actionlistener

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "taille();");
    Merci le_chomeur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Executer une fonction se trouvant sur la fenetre maitre
    Par PrinceMaster77 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 02/02/2006, 14h54
  2. Réponses: 3
    Dernier message: 16/01/2006, 16h02
  3. [VBA] Executer une fonction en passant son nom en argument
    Par David Guyon dans le forum Access
    Réponses: 4
    Dernier message: 05/10/2005, 19h56
  4. executer une fonction à la fermeture d'une fenêtre
    Par Oluha dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 22/02/2005, 09h46
  5. [Reflection] Executer une fonction dont le nom est contenu dans un String
    Par christobal dans le forum API standards et tierces
    Réponses: 8
    Dernier message: 05/07/2004, 15h23

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