Bonjour,
Je débute et j'ai trouvé un code qui fonctionne bien pour associer en externe (dans un fichier HTML) un fichier XML et XSL et permettre ainsi la visualisation du résultat aussi bien dans IE que dans les autres navigateurs.
Néanmoins, la méthode utilisée pour IE avec des contrôles ActiveX n'est pas très pratique pour l'utilisateur qui doit modifier le paramétrage de son navigateur et diminuer ainsi la sécurité.
J'ai trouvé deux articles et exemples de code qui permettent de se passer des contrôles ActiveX mais j'ai du mal à l'intégrer dans mon code initial (faute d'expérience probablement )
Qui pourrait m'aider à modifier mon code pour que cela fonctionne dans IE sans utiliser les contrôles ActiveX ?
Voici le code initial (complet) :
Et le bout de code à adapter pour éviter les contrôles ActiveX pour IE :
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 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <meta content="text/html;charset=UTF-8" http-equiv="Content-Type"> <title>Visualisation</title> <script> function loadXMLDoc(filename) { if (window.ActiveXObject) { xhttp = new ActiveXObject("Msxml2.XMLHTTP"); } else { xhttp = new XMLHttpRequest(); } xhttp.open("GET", filename, false); try {xhttp.responseType = "msxml-document"} catch(err) {} // Helping IE11 xhttp.send(""); return xhttp.responseXML; } function displayResult() { xml = loadXMLDoc("Flux.xml"); xsl = loadXMLDoc("XSLT.xsl"); // code pour IE if (window.ActiveXObject || xhttp.responseType == "msxml-document") { ex = xml.transformNode(xsl); document.getElementById("contenu").innerHTML = ex; } // code pour Chrome, Firefox, Opera, etc. else if (document.implementation && document.implementation.createDocument) { xsltProcessor = new XSLTProcessor(); xsltProcessor.importStylesheet(xsl); resultDocument = xsltProcessor.transformToFragment(xml, document); document.getElementById("contenu").appendChild(resultDocument); } } </script> </head> <body onload="displayResult()"> <div id="contenu"> </div> </body> </html>
Autre variante trouvée sur Internet :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 var xml = document.createElement("xml"); xml.src = "data.xml"; document.body.appendChild(xml); var xmlDocument = xml.XMLDocument; document.body.removeChild(xml);
Et voici les liens correspondants avec les explications (qui pour moi ne sont pas suffisantes... ) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 function parseWitoutActiveX(str){ var doc= null; var xmlIsland = document.createElement('xml'); if(xmlIsland){ xmlIsland.setAttribute('id','xmlActiveXGetRid'); xmlIsland.innerHTML = str; document.body.appendChild(xmlIsland); var doc = xmlIsland.XMLDocument; document.body.removeChild(xmlIsland); return doc; }
http://http://dean.edwards.name/weblog/2006/04/easy-xml/
http://www.codeproject.com/Tips/5877...and-Making-the
Merci par avance pour votre aide !
Partager