Bonjour,

j'utilise une page web avec un javascript pour afficher un fichier XML via XSL
ce JS est appelé au chargement de la page avec la directive
<body onload="....">

ci dessous mes javascripts:


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
    function loadXMLDoc(dname) 
    { 
      if (window.XMLHttpRequest) 
      { 
        xhttp=new XMLHttpRequest(); 
      } 
      else 
      { 
        xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
      xhttp.open("GET",dname,false); 
      xhttp.send(""); 
      return xhttp.responseXML; 
    } 
 
    function displayResult(sigle,valeur) 
    {
      document.getElementById("content").innerHTML='';
      xmlfile="test.xml"; 
      xslfile="srfil.xsl"; 
      xml=loadXMLDoc(xmlfile); 
      xsl=loadXMLDoc(xslfile); 
 
      // code for Mozilla, Firefox, Opera, etc. 
      if (document.implementation && document.implementation.createDocument) 
      { 
        xsltProcessor=new XSLTProcessor(); 
        xsltProcessor.importStylesheet(xsl); 
 
        if ( sigle != "" && valeur != "") 
        { 
            xsltProcessor.setParameter(null, "filtresigle", sigle); 
            xsltProcessor.setParameter(null, "filtrevalue", valeur); 
            xsltProcessor.setParameter(null, "gofiltre", 1); 
        } 
        else 
        { 
            xsltProcessor.setParameter(null, "gofiltre", 0); 
        } 
 
        resultDocument = xsltProcessor.transformToFragment(xml,document); 
        document.getElementById("content").appendChild(resultDocument); 
      } 
    } 
 
    function valider() 
    { 
      // si la valeur des champ est non vide 
      if(document.filtre.sigle.value != "" && document.filtre.valeur.value != "") 
      { 
        // les données sont ok, on peut envoyer le formulaire 
        displayResult(document.filtre.sigle.value,document.filtre.valeur.value); 
      } 
      else 
      { 
        // sinon on affiche un message 
        alert("Saisissez les données"); 
        // et on indique de ne pas envoyer le formulaire 
        return false; 
      } 
    }
et le code HTML


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
<body onload="displayResult()"> 
  <div id="header"> 
    <h1>Décodage SRFIL</h1> 
    <h2>Test.log</h2> 
  </div> 
  <div id="filtre"> 
    <h3>Filtre</h3> 
 
    <form name="filtre" action="" onsubmit="return valider()" method="get"> 
      <p> 
        <label for="sigle">Sigle :</label> 
        <input type="text" name="sigle" value="" /> 
        <label for="valeur">Valeur :</label> 
        <input type="text" name="valeur" value="" /> 
        <input type="submit" value="Ok" /> 
      </p> 
    </form> 
 
  </div> 
  <div id="content" /> 
</body>
Au chargement initial de la page, le fichier XML est correctement affiché via l'appel au script "DisplayResult".
On n'y passe pas de paramètres (ceux-ci servent à ajouter des filtres pour l'affichages des données XML)

Le formulaire sert pour l'utilisateur pour qu'il puisse filtrer l'affichage des données XML.

les valeurs sont correctement récupérée par le script "valider".

Dès validation du formulaire, le filtrage se passe bien (j'ai un rafraichissement de la div "content" avec les données filtrées.

par contre quelques instant plus tard, j'ai un refresh complet de la page, sans les données de filtrage...

j'ai essayé de retirer la directive "onload" dans la balise <body>, mais cela ne change rien...