Bonjour,

J'ai une application JSF (1.2 avec Facelets, Richfaces, etc) qui était exclusivement destinée à IE6. Désormais, on doit gérer aussi Firefox (ouf !).


J'ai une page contenant un formulaire, avec un bouton qui rafraichit ce formulaire. Lors du rafraichissement, j'ajoute des liens (<h:commandLink>) dans ce formulaire. En gros, j'ai un truc comme ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
 
<h:form id="toto">
    ...
    <a4j:commandButton ... reRender="toto"/>
    ...
    <h:commandLink .../>
</h:form>
Mon souci vient du code du command link généré par JSF. En gros, il ressemble à ça :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
<a href="#" onclick="if(typeof jsfcljs == 'function'){jsfcljs(document.forms['toto'],'...','');}return false">BLABLA</a>
(pour info, jsfcljs est la fonction Javascript générée par le composant <h:commandLink/>)

Mon souci, c'est que document.forms["toto"] fonctionne initialement, mais dès que le formulaire est regénéré suite au a4j:commandButton, ce code Javascript ne fonctionne pas sur FF (mais bien sur IE) :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
var x = document.forms["toto"];
var y = document.getElementById("toto");
alert("1: " + x + "\n2: " + y);
me retourne :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
1: undefined
2: [object HTMLFormElement]
Du coup, sur FF, j'ai une erreur Javascript quand je clique sur le lien, qui ne fonctionne pas du coup.

Une idée pour résoudre le problème (sans avoir à changer le reRender du <a4j:commandButton>) ?