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

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  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 659
    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 659
    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