Cela se produit dans Firefox, mais pas dans Google Chrome.document.createElement() crée une balise non fermée?
Je crée une balise SVG 'Image' dans une toile svg Web comme ceci:
im = document.createElementNS(svgns, 'image');
im.setAttributeNS(xlinkns, 'href', g.href);
canvas.appendChild(im);
Et si je regarde dans Firebug ou le débogueur de chrome, le svg apparaît auto-fermée comme ceci:
<image xlink:href="..." />
Mais si je puis imprimer le parent de innerHTML
de l'élément svg, il retourne ceci:
<svg><image xlink:href="..."></svg>
Notez que la balise d'image est maintenant fermée, ce qui provoque des erreurs sur la ligne. Ai-je découvert un bug, ou est-ce que je fais quelque chose de mal? Et, probablement beaucoup plus difficile, y a-t-il un moyen en JavaScript pour vérifier et réparer le tag?
Je suis au courant. Pourtant, il apparaît dans la visionneuse HTML de la première façon, et l'implémentation par défaut ne devrait-elle pas être la bonne? Si cela est prévu, cela ne signifie-t-il pas que les méthodes DOM javascript ne fonctionnent pas vraiment pour XHTML? – colinmarc
La façon dont l'outil l'affiche n'implique en rien la façon dont les données sortiront de innerHTML. Firebug est un projet complètement séparé de Firefox. Qu'est-ce que vous voulez réellement accomplir? Voulez-vous confirmer si c'est un bug? Voulez-vous faire quelque chose avec les données de innerHTML? Ce n'est pas que innerHTML génère une balise non fermée, c'est que HTML ne nécessite pas que /> il ne l'autorise pas, donc Firefox fournit un code HTML valide à partir de sa propriété innerHTML. – lambacck
votre édition m'a conduit au paquet innerDom, qui est ce que je veux, je pense. Merci – colinmarc