Problématique des événements dans un <div> avec ContentEditable.

Résolu
luckys333 Messages postés 3 Date d'inscription vendredi 21 novembre 2008 Statut Membre Dernière intervention 28 septembre 2009 - 26 sept. 2009 à 10:41
luckys333 Messages postés 3 Date d'inscription vendredi 21 novembre 2008 Statut Membre Dernière intervention 28 septembre 2009 - 28 sept. 2009 à 17:11
Bonjour à tous,

Je développe actuellement un editeur wysiwyg perso et je rencontre un problème avec les événements OnKeyPress et OnKeyUp.
Sur onClick, je capture, sans problème, l'objet Node sur lequel j'ai cliqué (à l'interieur de mon div conteneur).
Je souhaite faire de même avec OnKeyPress et OnKeyUp mais il semblerait que IE utilise l'évènement pour gérer la frappe des touches et il ne me renvoie que l'objet div (mon conteneur).
Comment, d'après vous, je pourrais faire pour intercepter ces événements ?
J'ai même essayer, en parcourant tous les n'uds de l'arbre, d'attacher l'événement à chaque balise mais le résultat est toujours le même.

Merci par avance de votre aide.

3 réponses

luckys333 Messages postés 3 Date d'inscription vendredi 21 novembre 2008 Statut Membre Dernière intervention 28 septembre 2009
28 sept. 2009 à 17:11
Bonjour,

J'ai enfin trouvé !!! si cela peux servir à quelqu'un, j'obtiens l'objet en cours d'édition par :
var element = document.selection.createRange().parentElement();

Cordialement.
3
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
26 sept. 2009 à 11:39
Bonjour,

navré, pas compris votre souci !

ce genre d'évènement réagit de la même
manière avec FF, IE et les autres
n'est-ce pas un souci de propagation ?
tout évènement sur un objet est aussi
déclenché sur leS parentS
peut-être ne faites-vous pas le
nécessaire pour l'empêcher avec IE ?
( différent de FF pour le coup )

div contenteditable ? je pensais que
c'était exclusif IE ça ? ça ne l'est plus ?

dans mon wysiwyg qu'il est à moi, j'utilise
un iframe exemple ici

Cordialement [mon Site] [M'écrire] Bul
0
luckys333 Messages postés 3 Date d'inscription vendredi 21 novembre 2008 Statut Membre Dernière intervention 28 septembre 2009
26 sept. 2009 à 16:18
Merci pour ta réponse.
Congratulation pour ton wysiwyg, c'est un très joli travail (résultat++) avec un code bien structuré. Malgré toutes mes recherches de ces dernières semaines, je ne suis jamais tombé sur ton éditeur. Et pourtant j'ai toujours trouvé ce que je chercher sur le Net.

L'attribut contentEdiable est reconnu aussi sous FF malgré tout ce que j'ai pus lire sur le Net, chez moi cela marche? Et FF offre la possibilité de redimensionné tableaux, cellules et ++. Ma version : (Mozilla/5.0 (Windows; U; Windows NT 5.1; fr; rv:1.9.0.14) Gecko/2009082707 Firefox/3.0.14) . Mais je n'en demandai pas tant.

Pour mon problème, je vais essayer d'être plus clair?

J'ai en bas de mon éditeur, un volet, qui d'une manière contextuelle affiche les attributs de l'élément en cours d'édition. Un peux comme dans DreamWeaver?

Sur OnClick, je récupère l'objet Node et ensuite je peux travailler sur cette base. J'affiche mon formulaire d'édition correspondant a la balise en cours avec tous les attributs possible y compris les classes de style prédéfinis ou utilisateurs etc?

Mais sur OnKeyPress et OnKeyUp, le seul objet Node que je récupere, c'est mon div (Conteneur de mon wysiwyg). J'ai même essayer de stopper la propagation de l'évènement par :
var ev = ev || window.event;
var element = ev.target || ev.srcElement;
if (ev.stopPropagation){event.stopPropagation();}
event.cancelBubble = true;

Effectivement la propagation est stoppée puisque le caractère n'est pas affiché dans mon éditeur? Mais (element), me retourne toujours mon div (Conteneur de mon wysiwyg).

Cordialement.
0
Rejoignez-nous