|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Invité régulier
![]() Inscription : mars 2005 Messages : 82 ![]() |
Bonjour,
je suis novice en Javascript mais je connais bien les autres languages orientés web : xhtml, css, php & mysql Sur mon forum, je cherchre à créer un système de smiley comme sur le forum de Developpez.com : on affiche les smileys dans un cadre à côté du textarea et quand l'utilisateur clique dessus, ça insère la balise correspondante dans le textarea. Je récupère mon textarea grâce à document.getElementById et j'insère le bbcode correspondant avec un element.value+''+code Le problème vient du fait que j'utilise un éditeur WYSIWYG qui s'apelle TinyEditor et quand je l'active, ca ne marche plus. En effet, Tiny Editor crée "pleins de cadres" par dessus mon textarea initial et je n'arrive pas à sélectionner le bon. Voilà, simplifié of course, le code généré une fois que l'éditeur est activé : Code :
Help ! Merci d'avance à ceux qui m'aideront |
||
|
|
00
|
|
|
#2 | ||
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 451 ![]() |
Le truc c'est que c'est dans une iframe. Il te faut donc accéder au code de l'iframe. Pour ce faire, il faut récupérer l'iframe en question (via son ID si elle en a un ou le nom de l'élément) et utiliser son "contentDocument" :
Code :
|
||
|
|
00
|
|
|
#3 | ||
|
Invité régulier
![]() Inscription : mars 2005 Messages : 82 ![]() |
Salut,
dabord : merci d'essayer de m'aider Je n'y arrive toujours pas. Le problème c'est que l'iframe en question n'a pas de ID et pas de NAME. J'ai donc essayé d'en rajouter un moi-même en javascript, ca marche bien mais l'éditeur wysiwyg ne marche plus du coup. Je suis donc allé founier sur internet pour voir si il y avait d'autres méthodes pour choper mon iframe sans Id et sans Name : j'ai trouvé getElementsByTagName Ca marche bien car quand je fais ce test il me repere bien 1 iframe : Code :
document.writeln("Il y a "+tables.length+" iframe dans cette page"); Voilà le code que j'utilise : Code :
|
||
|
|
00
|
|
|
#4 | ||
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
renvoie une liste d'objets.
Code :
|
||
|
|
00
|
|
|
#5 |
|
Invité régulier
![]() Inscription : mars 2005 Messages : 82 ![]() |
Pas bête
Par contre ce ne marche toujours pas ... :s aucun code de n'insère dans l'iframe quand je clique sur le smiley ! EDIT : J'ai également essayé ca : Code :
var myf=document.getElementsByTagName("iframe")[0].contentDocument.body.innerHTML; |
|
|
00
|
|
|
#6 |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 451 ![]() |
Ah parce que c'est censé exister ".value" sur un contentDocument (équivalent de document) ?
![]() Je te conseille vivement de regarder ce qu'il est possible ou non de faire sur chaque élément. |
|
|
00
|
|
|
#7 |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Code :
element.value = element.value+''+code;
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
00
|
|
|
#8 | |
|
Invité régulier
![]() Inscription : mars 2005 Messages : 82 ![]() |
Bonjour à toi,
merci pour le lien que je vais précieusement garder dans mes favoris mais je t'avouerais que ca ne m'avance pas vraiment dans mon problème ... Citation:
Si j'essaie de résumer : 1/ Bien sélectionner l'élement à modifier 2/ Insérer le code du smiley dans l'élément Je ne sais même pas si l'étape n°1 est réussie .... |
|
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 451 ![]() |
Ben le myf.contentWindow.document || myf.contentDocument te donne le "document" de l'iFrame. A partir de là tu peux faire quasiment tout ce que tu peux faire avec l'objet document normal et tu ne peux rien faire de plus.
Donc à partir de ce contentDocument tu peux faire un getElementsByTagName, getElementById, ... Après à toi de récupérer l'élément que tu veux. Citation:
|
|
|
|
00
|
|
|
#10 | ||
|
Invité régulier
![]() Inscription : mars 2005 Messages : 82 ![]() |
En suivant vos conseils, voilà ce que j'ai essayé :
Code :
|
||
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 451 ![]() |
Pour ne pas me répéter :
Ah parce que c'est censé exister ".value" sur un body ? ![]() ".value" ne fonctionne que sur des éléments de type input (comme tu l'aurais vu sur le site que j'ai donné). Pour tout le reste il faut utiliser les méthode DOM comme createElement, firstChild.data ou innerHTML ( Donc, encore une fois : n'essaye pas de bidouiller en utilisant des trucs qui n'existent pas. Regarde ce qui existe et code en fonction. |
|
|
00
|
|
|
#12 | ||
|
Invité régulier
![]() Inscription : mars 2005 Messages : 82 ![]() |
J'avance pas à pas.
En suivant vos conseils, je me suis debrouillé pour créer cette fonction : Code :
Il me faudrait donc insérer mon code smiley au niveau du curseur du visiteur et là encre je trouve 40.000 trucs différents sur le net. Si j'essaie de faire le point, je dirais qu'il faut que j'utilise notament .focus .. ? Le problème c'est qu'en faisant des recherches sur google, je trouve beaucoup de gens qui sont dans le même cas mais je trouve aussi 10.00 codes différents et bien longs donc difficiles à disséquer ! Une petite aide ? |
||
|
|
00
|
|
|
#13 | |
![]() ![]() ![]() Didier MouronvalDéveloppeur Web Inscription : juin 2008 Messages : 13 807 ![]() |
Citation:
![]() En fait, en écrivant le message, j'ai vu la suite : Code :
var myf=document.getElementsByTagName("iframe")[0].contentDocument.body.innerHTML; Mais tu as raison de rectifier, histoire de n'induire personne en erreur !
__________________
Pas de question technique par MP ! Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi ! Vous possédez un blog et aimeriez diffuser vos billets sur le forum, contactez-moi ! Mes formations video2brain : La formation complète sur JavaScript • JavaScript et le DOM par la pratique • PHP 5 et MySQL : les fondamentaux Mon livre sur jQuery
|
|
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : mars 2005 Messages : 82 ![]() |
Bonjour à tous,
je suis toujours bloqué sur le problème suivant : le code du smiley s'affiche bien mais supprime tout le texte existant dans le textarea ... Je pense qu'il faut utiliser focus(); et Createrange(); mais impossible de trouver des explications claires sur internet. Un petit coup de pouce serait le bienvenue
|
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() Tlouye Ci Inscription : mars 2004 Messages : 1 451 ![]() |
Sans voir ton code on ne peut pas faire grand chose.
|
|
|
00
|
|
|
#17 |
|
Membre éclairé
![]() ![]() Développeur Web Inscription : juin 2009 Messages : 363 ![]() |
Et si tu ajoutés ce qui est déjà existant :
|
|
00
|
|
|
#18 |
|
Membre habitué
![]() Étudiant Inscription : mai 2011 Messages : 226 ![]() |
J'imagine qu'il veut ajouter le smiley à l'endroit du caret
|
|
|
00
|
|
|
#19 | |
|
Invité régulier
![]() Inscription : mars 2005 Messages : 82 ![]() |
Citation:
ca marche à moitié - sous firefox ca rajoute un retour a la ligne (IE & Chrome pas de probleme) - ca se rajoute à la fin du texte, pas à l'endroit du curseur |
|
|
|
00
|
|
|
#20 |
|
Invité régulier
![]() Inscription : mars 2005 Messages : 82 ![]() |
Bonjour,
un peu d'aide ? Mon problème reste toujours d'actualité |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com