Je veux essayer d'être le plsu clair possible car c'est pas super simple pour moi.
Je veux ajouter un évènement spécial si je supprime un noeud HR dans mon IFRAME avec une touche de mon clavier.
tinyMCE.selectedElement me permet de récupérer le noeud où je suis.
Je veux que lorsque l'on appuie sur la touche suppr (keycode: 46) ou backspace (keycode: 8) , ça supprime, toutes les balises après HR compris jusqu'au prochain HR ou jusqu'à la fin de la page.
Le problème de ça est qu' il ya pas mal de cas spéciaux :
Exemple :
<HR></HR>
<H4>Titre H4</H4>
<p>texte</p>
<HR></HR>
<H4>Titre 2 H4</H4>
Exemple avec position de curseur possible, je représente le curseur par des |(1)
|(2)<HR>|(3)</HR>
|(4)<H4>|(5)Titre H4|(6)</H4>
<p>texte</p>
<HR></HR>
<H4>Titre 2 H4</H4>
Exemple avec selection de plusieurs caractères (on selectione avec la souris tout ce qui est en rouge) :
(7)<HR></HR>
<H4>Titre H4</H4>
<p>texte</p>
<HR></HR>
<H4>Titre 2 H4</H4>
ou
(8)<HR></HR>
<H4>Titre H4</H4>
<p>texte</p>
<HR></HR>
<H4>Titre 2 H4</H4>
Donc cela fait pas mal de cas particuliers.
J'arrive pour 2, 3 et 4.
5 ça doit être bon aussi, mais pour 6, 7 et 8, je ne vois pas du tout comment m'y prendre.
code pour savoir dans quel cas on est pour lui affecter un effet.
code de la function qui va supprimer les noeuds.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 if (tinyMCE.isIE && tinyMCE.settings.custom_undo_redo) { keys = [8, 46]; // Backspace,Delete var node = tinyMCE.selectedElement; var res = ""; if(node.nodeName == "HR") { res = Suppression.blocsuppr(node); } if (e.keyCode == 8 && node.previousSibling.nodeName == "HR") { res = Suppression.blocsuppr(node.previousSibling); } if (e.keyCode == 46 && node.nextSibling.nodeName == "HR") { res = Suppression.blocsuppr(node.nextSibling); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 var Suppression = { blocsuppr: function(Obj) { /*if (bloc==2) Obj=Obj.nextSibling; if (bloc==3) Obj=Obj.previousSibling;*/ //alert(Obj.nodeName); if(confirm('Êtes vous sûr de vouloir supprimer ce bloc :')) { while (Obj.nextSibling.nodeName != "BODY" && Obj.nextSibling.nodeName != "HR") { Obj.nextSibling.removeNode(); } Obj.removeNode(); } else { return; } } }
Partager