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

JavaScript Discussion :

DOMParser, parseFromString et IE11


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut DOMParser, parseFromString et IE11
    Bonjour,

    Je tente d'utiliser les codes habituels pour récupérer le contenu de balises html via XMLhttprequest, DOMPArser et parsefromString via:
    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 StringtoXML (text) {
                var xmlDoc;
    			var message = "";
                if (window.DOMParser) { // all browsers, except IE before version 9
                    var parser = new DOMParser();
                    try {
    					serializer = new XMLSerializer (),
                        xmlDoc = serializer.serializeToString(parser.parseFromString (text, "application/xml"));
                    } catch (e) {
                            // if text is not well-formed, 
                            // it raises an exception in IE from version 9
                        alert ("XML parsing error."+" # "+xmlDoc);
                        return false;
                    };
                }
                else {  // Internet Explorer before version 9
                    xmlDoc = CreateMSXMLDocumentObject ();
                    if (!xmlDoc) {
                        alert ("Cannot create XMLDocument object");
                        return false;
                    }
    
                    xmlDoc.loadXML (text);
                }
    
                var errorMsg = null;
                if (xmlDoc.parseError && xmlDoc.parseError.errorCode != 0) {
                    errorMsg = "XML Parsing Error: " + xmlDoc.parseError.reason
                              + " at line " + xmlDoc.parseError.line
                              + " at position " + xmlDoc.parseError.linepos;
                }
                else {
                    if (xmlDoc.documentElement) {
                        if (xmlDoc.documentElement.nodeName == "parsererror") {
                            errorMsg = xmlDoc.documentElement.childNodes[0].nodeValue;
                        }
                    }
                    else {
                        errorMsg = "XML Parsing Error!";
                    }
                }
    
                if (errorMsg) {
                    alert (errorMsg+" # "+xmlDoc.parseError.errorCode);
                    return false;
                }
    
                alert ("Parsing was successful!");
                return xmlDoc;
            }
    En utilisant cette focntion sous IE11, le message provenant de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    alert ("XML parsing error."+" # "+xmlDoc);
    me retourne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XML parsing error.#undefined
    .

    J'ai bien cherché partout sur le net et je me suis rendu compte que IE11 ne prend plus en charge les fonctions héritées de DOMParser.

    Comment faire alors?

  2. #2
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    https://developer.mozilla.org/fr/docs/Web/API/DOMParser

    DOMParser sert le plus souvent aux applications et extensions basées sur la plateforme Mozilla. Bien qu'il soit utilisable par les pages Web, il ne fait partie d'aucun standard et son niveau de support dans les autres navigateurs est inconnu.
    Je ne m'y risquerai pas avec cette API. Tu ne peux pas te débrouiller autrement ? Par exemple coller la réponse en innerHTML d'un <div> créé temporairement, pour pouvoir lui appliquer des querySelector dessus et venir chercher ce que tu as besoin ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut
    Bonjour,

    Ils sont terribles tous ces navigateurs !

    Bon, je vais en effet m'orienter vers un querySelectorAll.

    En te remerciant beaucoup,

    Bon muguet !

  4. #4
    Expert confirmé
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Par défaut
    Citation Envoyé par bastien Voir le message
    Bonjour,

    Je tente d'utiliser les codes habituels pour récupérer le contenu de balises html via XMLhttprequest, DOMPArser et parsefromString via:
    il y a une erreur de logique dans ton code

    j'au une string qui est censé représenter un xml
    Je la parse et j'ai une exception
    je n'ai donc pas de résultat pour mon parsing

    le programme s'interrompt

    la variable contenant le résultat de la sérailisation n'a jamais été affecté
    donc l'utiliser dans l'affichage est impossible.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    try {
    					serializer = new XMLSerializer (),
                        xmlDoc = serializer.serializeToString(parser.parseFromString (text, "application/xml"));
                    } catch (e) {
                            // if text is not well-formed, 
                            // it raises an exception in IE from version 9
                        //alert ("XML parsing error."+" # "+xmlDoc);
                        alert ("XML parsing error."+" # "+text); //l'erreur de parsing survient sur le texte d'origine pas sur le résultat.
                        return false;
                    };
    A+JYT

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

Discussions similaires

  1. Windows 8.1 : IE11 et Google ne s'accordent pas
    Par Stéphane le calme dans le forum Actualités
    Réponses: 26
    Dernier message: 11/11/2013, 21h17
  2. DOMParser ne reconnais pas mon XML
    Par comode dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 26/07/2013, 21h04
  3. [AJAX] DOMParser et parseFromString avec Firefox 3
    Par LeFredBleu dans le forum AJAX
    Réponses: 7
    Dernier message: 27/03/2009, 15h56
  4. [DOM] DOMParser vs DocumentBuilderFactory
    Par bnuitrare dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 20/04/2007, 09h08
  5. [DOM] Problème de parsing avec DomParser
    Par iam_free dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 21/04/2006, 09h33

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