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 :

keydown evenement spécial


Sujet :

JavaScript

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Points : 44
    Points
    44
    Par défaut keydown evenement spécial
    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 : 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 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
    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;
    		}	
    	}
    }

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    je serais toi je ne me baserais pas sur les nextSiblings etc ...
    je passerais par les expressions régulières ...

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Points : 44
    Points
    44
    Par défaut
    ok je vais regarder ça merci,
    mais j'y connais vraiment rien à ça

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Points : 44
    Points
    44
    Par défaut
    SpaceFrog il faut que je récupère le innerHTML de ma sélection, pour pouvoir travailler dessus ?

    Si c'est le cas j'arrive pas a récupérer seulement le innerHTML de ma selection.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var node = tinyMCE.selectedElement.innerHTML; 
    alert(node); // affiche le innerHTML de toute l'IFRAME
     
    var inst = tinyMCE.getInstanceById("mce_editor_0");
    var selectedText = inst.selection.getSelectedText();
    alert(selectedText); // affiche le texte de la selection
    Je suis complètement perdu là. Je me dis qu'il faut déjà récupérer le innerHTML pour ensuite travailler sur les expressions régulières.

  5. #5
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 640
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 640
    Points : 66 665
    Points
    66 665
    Billets dans le blog
    1
    Par défaut
    il y a eu récemment une paire de posts sur la selection de textes ...

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Points : 44
    Points
    44
    Par défaut
    J'ai un peu avancé
    Pour le cas où mon curseur est sur le noeud HR, aucun souci.
    Pour récupérer le contenu html de ma sélection c'est bon aussi.

    Néanmoins j'ai également besoin de savoir ce qu'il y a avant ou après la position de mon curseur, car si j'appuie sur la touche backspace et que la balise avtn la position de mon curseur est une HR je dois le repérer.
    Je me suis dis qu'il fallait que je récupère tout le contenu html de ma frame, sachant que je saurai combien de caractères elle fait.
    Ensuite je pensais récupérer la position du curseur pour regarder ce qu'il y avait avant. Malheureusement, ça je ne trouve pas comment savoir à quel nombre de caratères est mon curseur et donc ne peut pas aller regarder avant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    //selection de tout le contenu html de l'iframe
    var maframe = document.getElementById("mce_editor_0");
    var frametotal = maframe.contentWindow.document.body.innerHTML;
    alert('frametotal : ' + frametotal);
    alert('longueur de la frametotal : ' + frametotal.length);
    SpaceFrog si t'as un nouveau conseil, je suis preneur ou quelqu'un d'autre.
    Merci d'avance.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Points : 44
    Points
    44
    Par défaut
    personne n'a une idée pour trouver le ou les caractères avant la position de monn curseur ?

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    88
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2007
    Messages : 88
    Points : 44
    Points
    44
    Par défaut
    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
    19
    /*maxime suppression IE*/		
    //valeur du noeud en fonction de la position du curseur
    var node = tinyMCE.selectedElement; 
     
    //contenu html	de la selection				
    var maframe = document.getElementById("mce_editor_0");
    var doc = (maframe.window?maframe.window:maframe.contentWindow).document;
    var rng = doc.selection.createRange();
    var txthtml = rng.htmlText;
     
    //selection de tout le contenu html de l'iframe
    var frametotal = maframe.contentWindow.document.body.innerHTML;
     
     
    //recupere la position du caractère avant la selection
    var posDeb = frametotal.indexOf(txthtml);
     
    //recupere tout le contenu avant la selection
    var firstTextValue = frametotal.substring(0, posDeb);
    Néanmoins pour arriver à trouver la position du curseur dans la chaine quand on ne fait pas de selection mais seulement quand on place le curseur, je n'ai aucune piste

Discussions similaires

  1. Evenement spécial pour l'OS 4.0 de l'IPhone ce 8 avril
    Par X-plode dans le forum Actualités
    Réponses: 2
    Dernier message: 05/04/2010, 22h02
  2. Utiliser Evenement KeyDown avec un controle ActiveX
    Par parp1 dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 31/05/2007, 14h24
  3. Problème Evenement KeyDown
    Par Magcom dans le forum Delphi
    Réponses: 5
    Dernier message: 04/01/2007, 20h52
  4. [VB6] Probleme avec les evenements keydown et keyup
    Par johnson95 dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 04/07/2006, 13h50
  5. [vb.net][KeyDown] Evenement F12 sur la form
    Par arnolem dans le forum Windows Forms
    Réponses: 4
    Dernier message: 05/01/2006, 11h58

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