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

AJAX Discussion :

Identifier navigateur pour utiliser la méthode adaptée


Sujet :

AJAX

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Points : 72
    Points
    72
    Par défaut Identifier navigateur pour utiliser la méthode adaptée
    Bonjour

    Je n'arrive pas à trouver la bonne méthode permettant d'identifier la configuration de mon navigateur afin d'utiliser la méthode adaptée pour charger un xml issu de webservice.


    Mon code javascript lance la fonction postHTML()

    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
    62
    63
    64
    65
    66
    67
    68
    69
    70
     
    //Chargement des fichiers XML et XSL pour les navigateurs Firefox Chrome Opera ... 
    function loadXML(xmlPath) 
    { 
       var xmlhttp = new window.XMLHttpRequest(); 
       xmlhttp.open("GET", xmlPath, false); 
       xmlhttp.send(null); 
       var xmlDoc = xmlhttp.responseXML.documentElement; 
       return xmlDoc; 
    } 
     
    // Generation du rendu 
    function postHTML(xmlPath, xslPath, page, elementId) 
    { 	
    	var plugin = navigator.plugins["Contoso.Control"];
    	var ActixeXPoss='N';
    	if(plugin){
    		// Contoso control is installed and enabled
    		alert("Contoso control is installed and enabled");
    	}
    	else{
    		try{
    			plugin = new ActiveXObject("Contoso");
    			ActixeXPoss='O';
    		}
    		catch(e){
    			// Contoso control is not installed or disabled
    			alert("Contoso control is not installed or disabled");
    		}
    	}
    	if(ActixeXPoss == 'N'){
    		// script pour tous les navigateurs Firefox Opera ... 
    		alert("pas avec IE");
     
      	  	// Chargement XML 
    		var xslDocument = loadXML(xslPath); 
                    // Chargement XSL 
    		var xmlDocument = loadXML(xmlPath); 
     
    		var xsltProcessor=new XSLTProcessor(); 
    		xsltProcessor.importStylesheet(xslDocument); 
    		var htmlCode = xsltProcessor.transformToFragment(xmlDocument,document); 
    		document.getElementById(elementId).appendChild(htmlCode); 
     
    		var racine = xmlDocument;
       } 
       else{ 
          if (window.ActiveXObject){ 
    		// script pour IE 
    		alert("avec IE");
    		// Chargement XML 
    		var xml = new ActiveXObject("Microsoft.XMLDOM"); 
    		xml.async = false; 
    		xml.load(xmlPath); 
     
    		// Chargement XSL 
    		var xsl = new ActiveXObject("Microsoft.XMLDOM"); 
    		xsl.async = false; 
    		xsl.load(xslPath); 
    		// Transformation 
    		//alert("Element récepteur = " + elementId);
    		document.getElementById(elementId).innerHTML = xml.transformNode(xsl); 
     
    		var racine = xml.documentElement;
          } 
          else{ 
        	  alert("Transformation Xslt non supportée !");
        	  document.getElementById(elementId).innerHTML = "Xslt non supporté"; 
          } 
       }
    Auparavant ma méthode était légèrement différente, mais problème car n'étant pas compatible avec ie11.

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Points : 72
    Points
    72
    Par défaut test supplémentaire
    Test supplémentaire.
    si je remplace
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(ActixeXPoss == 'N'){
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(window.XMLHttpRequest && !(window.ActiveXObject)){
    avec IE (8) cela fonctionne, mais pas avec IE11 car mon script me dit "pas avec IE"

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    107
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 107
    Points : 72
    Points
    72
    Par défaut la solution que j'avais finalement trouvé
    la solution que j'avais finalement trouvé par mes propres moyens.
    Je la mets pour ceux qui comme moi pourraient être intéressés.

    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
     
    function postHTML(xmlPath, xslPath, Page, ElementId) 
    { 
    	var plugin = navigator.plugins["Msxml2.DOMDocument.3.0"];
     
    	if(Page=="Meme") var obj=document.getElementById(ElementId);
    	else var obj=window.opener.document.getElementById(ElementId)
     
    	if (!plugin) {
    		try {
    			plugin = new ActiveXObject("Msxml2.DOMDocument.3.0");
    		} catch(e) {}
    	}
     
    	var ActixeXPoss='N';
    	if(plugin){
    		ActixeXPoss='O';
    	}
    	if(ActixeXPoss == 'N'){
    		// script pour tous les navigateurs Firefox Opera ... 
      	  	// Chargement XML 
    		var xslDocument = loadXML(xslPath); 
            // Chargement XSL 
    		var xmlDocument = loadXML(xmlPath); 
     
    		var xsltProcessor=new XSLTProcessor(); 
    		xsltProcessor.importStylesheet(xslDocument); 
    		var htmlCode = xsltProcessor.transformToFragment(xmlDocument,document); 
    		obj.appendChild(htmlCode); 
     
    		var racine = xmlDocument;
       } 
       else{ 
    		// script pour IE 
    		// Chargement XML 
    		var xml = new ActiveXObject("Microsoft.XMLDOM"); 
    		xml.async = false; 
    		xml.load(xmlPath); 
     
    		// Chargement XSL 
    		var xsl = new ActiveXObject("Microsoft.XMLDOM"); 
    		xsl.async = false; 
    		xsl.load(xslPath); 
    		// Transformation 
    		obj.innerHTML = xml.transformNode(xsl); 
     
    		var racine = xml.documentElement;
       }
     
    }
    Cela fonctionne parfaitement.

    Je viens par contre de découvrir, qu'avec le navigateur Edge, il y a un problème avec la transformation xsl/xslt

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

Discussions similaires

  1. Problème pour utiliser la méthode d'une classe
    Par Freddrick dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 09/09/2012, 18h43
  2. Réponses: 6
    Dernier message: 07/01/2009, 10h57
  3. Méthode pour utiliser Inno Setup
    Par kevinou55 dans le forum Outils
    Réponses: 3
    Dernier message: 21/01/2008, 08h54
  4. Réponses: 1
    Dernier message: 24/10/2007, 11h01
  5. Réponses: 2
    Dernier message: 14/05/2007, 23h11

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