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 :

IE et SelectionStart/End


Sujet :

JavaScript

  1. #1
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut IE et SelectionStart/End
    Bonjour à tous.
    je suis complètement bloqué
    j'ai un petit script qui permet d'ajouter des balise avant et après la selection d'un texte area;
    ça fonctionne nikel sous firefox mais sous ie ....
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function tag(editorid)
    {
    var area = document.getElementById(editorid); /* récuperation de l'element concerné */
    var texte = area.value; /*texte de l'element*/
    var debut = texte.substring(0, area.selectionStart); /*avant la selection*/
    var entre = texte.substring(area.selectionStart, area.selectionEnd);/* la selection*/
    var fin = texte.substring(area.selectionEnd); /*après la selection*/
    var starttag ='[B ]'; /*sans espace, mais ce code est interprété sur ce forum*/
    var endtag = '[/B ]' /*idem*/
    area.value = debut + starttag + entre + endtag + fin; /*remplacement du texte*/
    editor(editorid); /*fonction perso de rafraichissement*/
    area.focus();
    }
    Donc par exemple, avec "debut selection fin"
    Sous firefox, cet exemple est remplacer par:
    "debut [B ] selection [/B ] fin"
    alors que sous ie:
    "debut selection fin[B ]debut selection fin[/B ]debut selection fin"
    Quelqu'un aurait il une idée ?
    Merci

  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 658
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 75
    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 658
    Billets dans le blog
    1
    Par défaut
    fais plutot un replace avec une regExp ...
    Ma page Developpez - Mon Blog Developpez
    Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
    Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
    Votre post est résolu ? Alors n'oubliez pas le Tag

    Venez sur le Chat de Développez !

  3. #3
    Membre éclairé
    Inscrit en
    Mai 2008
    Messages
    317
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 317
    Par défaut
    Bah c'est pour un éditeur de texte un peu comme celui que tu vas utiliser pour me répondre
    Et je vois pas vraiment comment utiliser du php pour ajouter des balises de mise en forme avant et après une sélection (le soucis c'est de récupérer la sélection en php).
    => c'est l'ajout de balise en direct que j'essaye de faire, et non pas l'interpretation; ça y'a aucun soucis.

    Enfin toujours est il que j'ai trouvé une solution, disons... bidouillé ^^
    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
    20
    21
    var area = document.getElementById(editorid);
    	var texte = area.value;
    	var Nom = navigator.appName;
    	if (Nom == 'Netscape') {
    		var debut = texte.substring(0, area.selectionStart);
    		var entre = texte.substring(area.selectionStart, area.selectionEnd);
    		var fin = texte.substring(area.selectionEnd);
    	}
    	if (Nom == 'Microsoft Internet Explorer') {
    		if( document.selection ){
    			var range = document.selection.createRange();
    			var stored_range = range.duplicate();
    			stored_range.moveToElementText( area );
    			stored_range.setEndPoint( 'EndToEnd', range );
    			area.selectionStart = stored_range.text.length - range.text.length;
    			area.selectionEnd = area.selectionStart + range.text.length;
    			var debut = texte.substring(0, area.selectionStart);
    			var entre = texte.substring(area.selectionStart, area.selectionEnd);
    			var fin = texte.substring(area.selectionEnd);
    		}
    	}
    ça fonctionne Quasi parfaitement ^^
    Quasiment dans le sens ou maintenant IE récupère la sélection comme il faut, et ajoute les balise comme je le souhaite; mais le soucis, c'est que si je n'ai rien de sélectionné, la balise se place à la fin du texte au lieu de ce placer a la position actuel du curseur dans le textarea, comme le fait si bien firefox.

    Si vous avez une solution pour récupérer la position actuel du curseur (d'ecriture hein, pas le curseur de la souris ^^) sous IE, je prends avec plaisir

Discussions similaires

  1. [JDBC] [Oracle] Erreur : End of TNS data channel
    Par loicmillion dans le forum JDBC
    Réponses: 2
    Dernier message: 01/02/2005, 14h27
  2. Réponses: 2
    Dernier message: 15/04/2004, 15h44
  3. Erreur unexpected end of file
    Par snoop dans le forum Linux
    Réponses: 6
    Dernier message: 22/03/2004, 10h37
  4. questions sur le if then end if;
    Par ghostlord79 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 19/02/2004, 16h35
  5. Front End graphique pour GDB sous windows
    Par KORTA dans le forum GDB
    Réponses: 8
    Dernier message: 20/08/2003, 09h52

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