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 :

Contenu iframe


Sujet :

JavaScript

  1. #1
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut Contenu iframe
    Bonjour !
    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!

  2. #2
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    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

  3. #3
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut
    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 ???

  4. #4
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    Que fait tu des données après envoi ?

  5. #5
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut
    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

  6. #6
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    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.

  7. #7
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut
    Effectivement, le but est d'afficher le contenu du message (contenant des balises HTML) dans une page HTML...

  8. #8
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    5Vs1 qu'il va proposer une solution à base de CDATA XD sinon on comparera nos solutions ^^

  9. #9
    Membre expert
    Avatar de FremyCompany
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    2 532
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 2 532
    Points : 3 239
    Points
    3 239
    Par défaut
    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...

  10. #10
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut
    Merci,
    Je travaille également en asp.net

    En fait jusqu'à maintenant j'utilisais également message.innerText, mais il me transformais mes balises en &lt; et &gt;...
    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 !

  11. #11
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    <![CDATA[ LE_INNERHTML ]]>
    de ce fait, ce qui est dans le CDATA est considéré comme du texte, et non comme du code XML

  12. #12
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut
    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???

  13. #13
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    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")

  14. #14
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut
    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...

  15. #15
    Expert éminent
    Avatar de Swoög
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    6 045
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 6 045
    Points : 8 339
    Points
    8 339
    Par défaut
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    (<[^=]*=)([^" ]+)([^>]>)
    replace : mais bon.. ça vaut ce que ça vaut

  16. #16
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut
    Merci beaucoup

    Je vais creuser ces différentes pistes.

    A+

  17. #17
    Membre régulier Avatar de nicolb
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    184
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 184
    Points : 103
    Points
    103
    Par défaut
    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 !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/02/2014, 15h58
  2. Contenu Iframe à la taille de l'Ecran
    Par sdisp+ dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 28/01/2012, 11h17
  3. [TinyMCE] Récupérer contenu iframe
    Par jackRackham dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 29/11/2011, 14h24
  4. Filtrer contenu iframe
    Par Riri80 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 02/02/2010, 13h52
  5. Taille en fonction du contenu(iframe)
    Par chezdevelopping dans le forum Balisage (X)HTML et validation W3C
    Réponses: 0
    Dernier message: 21/01/2009, 11h40

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