Comment exécuter une fonction a chaque requête envoyé au serveur. En d'autre terme à chaque construction du DOM.
Merci
Comment exécuter une fonction a chaque requête envoyé au serveur. En d'autre terme à chaque construction du DOM.
Merci
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>"
J'ai essayé ça mais ca marche pas
Le width s'applique au démarrage, mais dés que je clique sur un bouton, il prend une autre largeur
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();
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
heu il font quoi tes boutons ??
et ça ?
tu associes au load ta méthode , puis tu la ré-appel ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 window.onload = taille; // exécuté à chaque reload taille();![]()
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
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();" />
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();">
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}"
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
voila ça marche, j'appelle donc ma fonction javascript après le traitement du actionlistener
Merci le_chomeur
Code : Sélectionner tout - Visualiser dans une fenêtre à part JavascriptContext.addJavascriptCall(FacesContext.getCurrentInstance(), "taille();");
Partager