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 :

Modif de balises mathml par javascript non mise à jour à l'affichage


Sujet :

JavaScript

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Avril 2020
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Avril 2020
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Modif de balises mathml par javascript non mise à jour à l'affichage
    Bonjour,

    Je rencontre un pb bizarre et malgré mes recherche, je ne vois pas de solution:

    J'ai une fonction javascript qui ajoute un arbre mathml pour afficher 1/2 en fraction verticale.
    Code html : 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
    <head>
     
    <script type="text/javascript"> 
     
    function addFrac(el) {
            var mathbox = el.parentNode;
            var f = document.createElement('mfrac');
            var n = document.createElement('mi');
            var nn = document.createTextNode("1");
            n.appendChild(nn);
            var d = document.createElement('mi');
            var dd = document.createTextNode("2");
            d.appendChild(dd);
            f.appendChild(n);
            f.appendChild(d);
            mathbox.appendChild(f);
            mathbox.removeChild(el);
    }
     
    </script> 
    </head>
     
    <html>
    	<math xmlns="http://www.w3.org/1998/Math/MathML">
     	   <mi onclick="addFrac(this);">Ajouter 1/2</mi>
    	</math>
     
    </html>

    Le code mathml modifié par javascript est bon mais firefox affiche juste "12" et non la fraction mise en forme.

    Si ensuite je vais dans l'inspecteur, que j'édite le DOM du bloc mathml (j'ajoute un retour chariot par exemple et je l'enlève et je quitte l'édition), l'affichage est mis à jour dans firefox et je vois la fraction.

    Comment puis-je faire pour que l'affichage puisse se mettre à jour dès la modif du DOM par le javascript ?

    Merci beaucoup pour vos contributions.

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    Bonjour et bienvenue sur DVP.

    Visiblement le moteur de rendu de FireFox ne prend pas en compte ces éléments si ils sont ajoutés via un appendChildl mais supporte très bien ces éléments si il sont injectés sous forme de innerHTML ou via insertAdjacentHTML.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const html = "<mfrac><mi>3</mi><mi>6</mi></mfrac>";
    // marche avec
    mathbox.insertAdjacentHTML("beforeend", html);
    // ou
    mathbox.innerHTML = html;

  3. #3
    Membre expérimenté
    Homme Profil pro
    bricoleur par les mots
    Inscrit en
    Avril 2015
    Messages
    714
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 79
    Localisation : France, Seine Maritime (Haute Normandie)

    Informations professionnelles :
    Activité : bricoleur par les mots
    Secteur : Distribution

    Informations forums :
    Inscription : Avril 2015
    Messages : 714
    Points : 1 598
    Points
    1 598
    Par défaut
    jour

    ou utilise createElementNS et pour les chiffres utilise createTextNode

    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
    function addFrac(el) {
     
    var mathNS = "http://www.w3.org/1998/Math/MathML";
     
     
            var mathbox = el.parentNode;
            var f = document.createElementNS(mathNS,'mfrac');
            var n = document.createElementNS(mathNS,'mi');
            var nn = document.createTextNode('1');
            n.appendChild(nn);
            var d = document.createElementNS(mathNS,'mi');
            var dd = document.createTextNode('2');
            d.appendChild(dd);
            f.appendChild(n);
            f.appendChild(d);
            mathbox.appendChild(f);
            mathbox.removeChild(el);
    }
    Plus vite encore plus vite toujours plus vite.

  4. #4
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    16 959
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 16 959
    Points : 44 122
    Points
    44 122
    Par défaut
    ou utilise createElementNS
    Bien vu, c'est traité comme du SVG et non du HTML, bizarre mais j'en prends note même si vu le non support je ne pense pas m'en servir de sitôt !

    La spécification n'est pas d'une grande aide sur ce coup :
    Citation Envoyé par 2.1.2 MathML and Namespaces
    xmlns="http://www.w3.org/1998/Math/MathML" may be used on the math element, it will be ignored by the HTML parser, which always places math elements and its descendents in the MathML namespace (other than special rules described in Appendix A Parsing MathMLfor invalid input, and for annotation-xml.
    Mathematical Markup Language (MathML)

Discussions similaires

  1. Réponses: 0
    Dernier message: 13/02/2018, 11h41
  2. [JpGraph] image non mise à jour
    Par Lyna31 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 14/03/2007, 16h07
  3. Réponses: 7
    Dernier message: 15/01/2007, 18h18
  4. Vue non mise à jour après modification d'une table
    Par cybernet35 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 19/01/2006, 13h54
  5. Réponses: 2
    Dernier message: 23/08/2005, 19h20

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