11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour,

Voilà, j'ai un texte de la forme : "<div>toto</div>"

Et j'ai besoin de manipuler ce flux avec DOM. Par exemple, je voudrais faire :


var text = "<div>toto</div>";
var content = document.createElement("balise");
content.innerHTML = text;
var divs = text.getElementsByTagName("div");


Ca ne marche que sous Firefox. Auriez vous une autre technique ?

Merci d'avance
Modifié par frodum (24 Oct 2008 - 15:08)
Hello,

je ne comprends pas ce que tu veux faire en me basant sur les instructions que tu donnes.

De plus, innerHTML c'est pas du DOM. Regarde du côté de createTextNode.
J'ai pas dit que innerHTML était du DOM. J'utilise innerHTML (pour transformer le texte en html) et je souhaite ensuite utiliser les méthodes DOM.

Ok, je réexplique plus en détail.

Je récupére un flux texte (en AJAX) qui représente du HTML.

J'ai besoin d'analyser, de parser ce flux pour voir s'il contient des balises script, style, link, pour importer les fichier et code JS/CSS qu'il contient.

Le problème quand je récupère un flux en AJAX, c'est que ca peut être de 2 types: XML ou Text (et pas HTML).

Donc, j'ai besoin de transformer ce flux texte en flux HTML pour le parcourir avec les méthodes DOM.

Et ce, pour éviter de parser mon flux comme une "string", ce qui je pense sera beaucoup moins performant.

J'espère que j'ai pu préciser mon problème que j'avais voulu simplifier pour justement le rendre plus clair Smiley biggol
Modifié par frodum (24 Oct 2008 - 13:04)
Alors je pense que là on entre dans le domaine de la conception : il faut voir le problème en amont. Je serais toi je servirais toujours du XML et lorsque c'est du texte que tu envois utilises une structure de base dans laquelle tu mettras ton texte dans un noeud et en usant de CDATA.

++
Merci de la réponse.

Effectivement, on a pensé à faire cela, le problème c'est qu'on a besoin que cela soit du HTML pas du Text. Même si le texte (représentant du HTML) est stocké dans un CDATA, j'aurai besoin de le parser d'une facon ou d'un autre.

Mais dans la même lignée que t'as réponse, j'ai opté pour qqch qui semble marcher. A savoir transformer le flux texte (qui représente du HTML) comme un flux XML, ce que je sais faire.

Du coup, je peux parser mon flux.

Ex:

<script type='text/javascript' src=''>
<style>
body{
   background-color: red;
}
</style>



Grâce à la méthode getAttribute() et à la propriété firstChild.nodeValue, j'arrive à obtenir les attributs et le contenu de chaque balise.

Je me demande par contre, si je ne vais pas rencontrer des cas bizarre à considérer que mon flux HTML est un flux XML. Je verrai bien.

Merci en tout cas.
Modifié par frodum (24 Oct 2008 - 15:07)