Récupérer un contenu qui se trouve dans un iframe

Fermé
Ysabe_l Messages postés 12584 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 26 novembre 2024 - 3 avril 2014 à 11:25
Ysabe_l Messages postés 12584 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 26 novembre 2024 - 3 avril 2014 à 14:26
Bonjour,

Je me retrouve confrontée à un soucis et je n'arrive pas à m'en sortir.

Voilà je dois créer un site qui va afficher des news. Donc en backoffice j'ai fait une page pour l'ajout de news avec titre et message. Le titre est un simple input, et pour le message j'ai un textarea mais il fallait de l'édition avancée permettant un peu de mise en page, j'ai donc utilisé ckeditor qui est juste ce qu'il fallait.

Maintenant je veux faire une vérification en javascript que les champs ne soient pas vides avant de valider (pour la vérification en php j'ai réussi sans soucis).

Pour le titre (en input) pas de problème.

Pour le message ça se complique. En effet je ne peux plus utiliser l'id que j'avais mis au textarea parce que ckeditor me remplace le textarea par un iframe avec ce script :

CKEDITOR.replace("message");


Du coup mon code de ce morceau là devient le suivant :

<textarea name="message" id="message" style="visibility: hidden; display: none;"/>

suivi de tout le code mis par ckeditor.

Dans le code de la suite, je vois bien l'iframe avec toute sa structure et je connais donc le nom de la class qui contient mon message et donc que je dois récupérer.

Impossible de le cibler directement puisqu'il est dans une iframe.

Après un bon moment de recherches j'ai trouvé cette solution :

var message = window.frames['mon_iframe'].document.getElementsByName("cke_editable cke_editable_themed cke_contents_ltr")[0].value;


Mais là encore problème, il faut cibler l'iframe avec son name et l'iframe générée par ckeditor n'a pas de name ! Voilà tout ce que j'ai pour son ouverture :

<iframe src="" frameborder="0" class="cke_wysiwyg_frame cke_reset" title="Éditeur de Texte Enrichi, message" aria-describedby="cke_43" tabindex="0" allowtransparency="true" style="width: 100%; height: 100%;"/>


Je n'arrive pas du tout à trouver dans les fichiers de ckeditor ce que je pourrais modifier pour rajouter un name à cette iframe qui me résoudrait mon soucis.

Avec ces éléments, est-ce que vous voyez comment je pourrais récupérer le contenu de mon message ?

Je pense avoir mis tous les codes qui pourraient être nécessaires mais si besoin demandez-moi et je rajoute ce qu'il vous faut.

Si vous avez une autre solution que ckeditor mais qui soit aussi configurable (je ne dois pas laisser beaucoup d'options de mise en page aux utilisateurs) et qui permettrait de récupérer en javascript "facilement" le contenu je veux bien prendre aussi.

Sinon est-ce qu'on peut estimer que l'utilisateur peut oublier de mettre un titre mais ne va pas oublier le message dans la grande majorité des cas, et que la vérification en php est suffisante pour le message ?

Merci d'avance !


1 réponse

salut Ysabe_l


Dans le code de la suite, je vois bien l'iframe avec toute sa structure et je connais donc le nom de la class qui contient mon message et donc que je dois récupérer.


puis

Mais là encore problème, il faut cibler l'iframe avec son name et l'iframe générée par ckeditor n'a pas de name ! Voilà tout ce que j'ai pour son ouverture :

alors en partant du principe que ton js est correct, il faut essayer de sélectionner par la class avec getElementsByClassName("cke_wysiwyg_frame cke_reset")



sinon pour vérifier si un champs est vide dans un formulaire, j'utilise required de html5, cela évite la rédaction de code, je suis fainéant.

j'espère sincèrement avoir pu t'aider et bonne journée
¸,ø¤º°'°º¤ø,¸¸,ø¤º° un (0n53!1 ? f0rm473... °º¤ø,¸¸,ø¤º°'°º¤ø,¸
0
Ysabe_l Messages postés 12584 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 26 novembre 2024 276
3 avril 2014 à 13:33
Bonjour,

Je vais essayer de voir ça, donc cibler l'iframe avec sa class.

Le problème de required c'est que je ne peux pas modifier l'aspect graphique de l'élément qui n'y répond pas (en tout cas de ce que je sais) alors que là je dois le modifier.

Je te tiens au courant si j'y arrive avec ta piste.
0
Ysabe_l Messages postés 12584 Date d'inscription vendredi 12 avril 2013 Statut Contributeur Dernière intervention 26 novembre 2024 276
3 avril 2014 à 14:26
Salut,

Je ne sais pas si je sature d'être dessus depuis trop longtemps, mais je ne vois pas comment cibler l'iframe avec sa class.

Je vais faire autre chose et je reviendrai sur ce morceau là plus tard.

Merci quand même.
0