-
Contenu iframe
Bonjour !:D
J'ai fait un éditeur de texte amélioré utilisant une iframe servant à transférer des messages dans un fichier XML.
Je viens de me rendre compte que malgré mes insertions de balises en javascript sous la forme "<img src="bla-bla" border="0" />, lorsque je récupère le contenu de l'iframe (window.frames['monIframe'].document.body.innerHTML), les guillemets sont sytématiquement enlevés (<img src="bla-bla" border=0 />), sauf pour les adresses web...:(
Est-ce normal, et y a-t-il un moyen de modifier celà coté client ?
Car bien évidemment j'obtiens une erreur lors de la mise à jour de mon fichier xml qui n'accepte pas les valeurs d'attibuts sans guillemets...
Merci d'avance!
-
Salut !
Je suppose que tu travail avec IE ;)
A moins de faire le remplacement à la main (avec des expressions régulières par exemple) je ne vois pas de moyen de le faire...
mais n'y a-t-il pas d'autres moyen de faire ce que tu cherche à faire sans utiliser les iframes ? avec AJAX par exemple... ou alors sans passer par innerHTML ;)
-
Merci pour ta réponse !
En fait je viens de passer pas mal d'heure à faire cet éditeur de texte, et je suis un peu dégouté !!!;)
Je viens de regarder quelques éditeurs "comerciaux", et ils ont également ce soucis.
Mon éditeur permet d'insérer un tas de balises HTML de mise en forme, et je sens que faire le remplacement à la main va être une vrai usine à gaz !
Je ne connais pas AJAX... Je vais creuser d'abord de ce côté.
Si quelqu'un a réussi à résoudre ce type de soucis, je suis preneur !!!;)
Et un truc tout bête: l'éditeur de texte de ce forum semble conserver les guillemets (je viens de regarder la source de la page) !!! Comment cette prouesse a-t-elle été réalisée ??? L'éditeur utilise-t-il une iframe ???:roll:
-
Que fait tu des données après envoi ?
-
En fait je cherche juste à stocker mes données dans un fichier XML, mais en conservant les balises HTML... Chaque attribut doit donc être entre guillemets.:?
Je viens d'essaye de récupérer le contenu de mon iframe sans utiliser la propriété innerHTML, mais sans succès. Alors que
window.frames['editeur'].document.body.nodeName fonctionne,
window.frames['editeur'].document.body.nodeValue ne fonctionne pas...
Comment se passer de innerHTML pour récupérer le contenu du body d'une iframe ?
Merci d'avance
-
et que ferais-tu après une fois que le html serait dans ton fichier XML ?
EDIT : si le but est d'afficher le HTML dans une page web par la suite, alors no problem j'ai la solution.
-
Effectivement, le but est d'afficher le contenu du message (contenant des balises HTML) dans une page HTML...
-
5Vs1 qu'il va proposer une solution à base de CDATA XD ;) sinon on comparera nos solutions ^^
-
Alors, voici un methode (coté serveur).
Tu envoie innerHTML coté JS.
Coté serveur tu ouvre ton XML.
Tu rajoute une nouvelle balise message.
et tu fait
message.innerText (verrifie la syntaxe et les noms pour ton langage, ici je travaille en ASP .Net) = data (ce que tu as recu du client (au format TEXTE ==> Données brutes).)
Lors de l'affichage :
tu fait l'opération contraire...
J'espère que j'ai été suffisement clair et qu'on sait faire ca en php...
EDIT :: L'idée d'un CDATA est pas mauvaise non plus...
-
Merci,
Je travaille également en asp.net;)
En fait jusqu'à maintenant j'utilisais également message.innerText, mais il me transformais mes balises en < et >...
Et lorsque je procède à l'affichage du fichier xml (via une transformation xsl), mes balises sont affichées comme du texte à l'écran !
Si j'affiche le message via .net, pas de problème, mais via xsl...
Je suis donc passé à message.innerXML et je suis tombé sur l'os des guillemets !
-
:| oula, j'ai pas tout compris là perso XD
à priori tu utilises le moteur DOM du langage côté serveur ;)
pour le CDATA, je pensais en fait à plutôt que d'insérer brute de fonderie ton innerHTML dans ton document XML, tu l'insère dans des balises
Code:
<![CDATA[ LE_INNERHTML ]]>
de ce fait, ce qui est dans le CDATA est considéré comme du texte, et non comme du code XML ;)
-
Si j'utilise CDATA, est-ce que lorsque je vais opérer une transformation xsl le contenu, interprété comme du texte, pourra s'afficher comme du html ?
Autrement dit mes balises seront-elles interprétées comme telles ou comme du texte???;)
-
arf... par contre, pas possible de traiter des CDATA via XSL...
je pense que désormais le plus simple serait de trouver une expression régulière qui permette d'ajouter les "" automatiquement... ou alors, d'insérer directement le fragment DOM dans ton document XML (si le fragment DOM est valide, le fait qu'il soit inséré dans un document XML devrait le forcé à suivre les règles XML du "well-form")
-
Merci beaucoup !
Savez-vous comment je pourrais récupérer le contenu du body de mon iframe sans utiliser innerHTML ?
Comme je le disais précédemment, j'ai essayé window.frames['editeur'].document.body.nodeValue , mais sans succès...:(
-
en toutes logiques, si tu utilises le fragment DOM tout seul (document.frames['iframe'].document.body) ça devrait suffire, mais c'est vrai que ça ne peut être envoyé tel quel au serveur...
sinon, peut-être qu'en créant un nouveau document XML en Javascript, en faisant un appendChild avec le body de la frame puis en en récupérant le innerHTML (du pseudo document XML créé) cela devrait résoudre ton problème... sinon je ne vois pas grand chose de plus que les expression régulières... (et là bon courage, une idée de pattern pourrait être :
match :
Code:
(<[^=]*=)([^" ]+)([^>]>)
replace : mais bon.. ça vaut ce que ça vaut :(
-
Merci beaucoup :D
Je vais creuser ces différentes pistes.
A+
-
En l'absence de solution plus simple, j'ai choisi de reformater mes données côté serveur... Ca a le mérite de fonctionner !;)