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 :

Barre d'outils en javascript


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut Barre d'outils en javascript
    Bonjour, j'essaie de faire une barre d'outils avec des boutons qui permettent d'écrire du texte dans un textarea, lorsqu'on clique sur un bouton, cela affiche des balises .

    Mon problème est lorsque l'on clique sur les boutons, le code s'affiche en bas de page... Comment peut-on y remédier pour que le code s'écrive où le pointeur est positionné ?

    PS : Je n'ai pas de bonne base en javascript, j'en ai seulement besoin pour un éditeur de texte..

    Voici mon code

    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
     
    <script language="JavaScript" type="text/javascript">
     
    function AddText(startTag,defaultText,endTag) 
    {
       with(document.poster)
       {
          if (text.createTextRange) 
          {
             var text;
             text.focus(text.caretPos);
             text.caretPos = document.selection.createRange().duplicate();
             if(text.caretPos.text.length>0)
             {
     
                var sel = text.caretPos.text;
                var fin = '';
                while(sel.substring(sel.length-1, sel.length)==' ')
                {
                   sel = sel.substring(0, sel.length-1)
                   fin += ' ';
                }
                text.caretPos.text = startTag + sel + endTag + fin;
             }
             else
                text.caretPos.text = startTag+defaultText+endTag;
          }
          else text.value += startTag+defaultText+endTag;
       }
    }
    </script>


    Merci d'avance !!

    Bonne soirée

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Salut.

    Bon, tout d'abord, à titre personnel, je déconseilles absolument l'utilisation de with pour une raison assez simple : dans le corps du with, JavaScript va essayer d'attribuer l'argument du with avec chaque instruction, le problème est que si l'on reprend ton exemple, que va-t-il se passer d'après toi si tu invoques une propriété / méthode qui soit commune à window et document.poster ?
    Je te conseilles donc plutôt si tu tiens absolument à ne pas répéter document.posteur (ce qui se justifie tout à fait si tu fais souvent référence à cet objet) de stocker cet objet dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    var ref = document.posteur;
    comme ça, tu sais exactement à quel objet tu fais référence en appelant des propriétés ou méthodes.

    Bref, concernant ton problème, c'est un grand classique. Tu appelles certainement les fonctions de ta barre d'outils sur le onclick des boutons associés. Le problème, c'est que le onclick donne le focus à ce bouton, donc le texte sélectionné perd le focus et n'est donc plus sélectionné
    La solution est de passer par l'événement onmousedown, qui devra systématiquement renvoyer false pour que le texte garde le focus et reste sélectionné !
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    Merci de votre conseil, ainsi que de votre aide !!

    J'utilise ceci pour ma page

    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
     
    echo '<form name="poster" method="post" action="?page='.$page.'&a=save">';
     
    //MENU |
     
    echo"
     
    <a href=\"javascript:AddText('= Titre =','','');\" title=\"Grand titre\"><img src=\"$img_menu/h1.png\"></a>  
    <a href=\"javascript:AddText('== Titre ==','','');\" title=\"Titre moyen\"><img src=\"$img_menu/h2.png\"></a>  
    <a href=\"javascript:AddText('=== Titre ===','','');\" title=\"Petit titre\"><img src=\"$img_menu/h3.png\"></a>  
    ";
     
    include("./System/script.html");
     
    echo"\n<textarea rows=\"20\" cols=\"80\" name=\"text\" wrap=\"virtual\" onmouseover=\"this.focus();\" id='text'>$data</textarea>\n";
    	echo '<p><input type="submit" value="Enregistrer" class="button" /></p>';
    	echo "\n</form>\n";
    }
    J'utilise la fonction "AddText", je dois la remplacer par onmousedown ?

    Puis, modifier dans mon script "function AddText(startTag,defaultText,endTag) " par function onmousedown (startTag,defaultText,endTag) ?

    Merci d'avance, ça me fait plaisir de comprendre le javascript !
    J'utilise surtout le PHP

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    D'accord, excusez-moi pour le PHP

    Donc pour le html, j'obtiens ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <a href="#" onmousedown="AddText('= Titre =','','');return false" title="Grand titre"><img src="$img_menu/h1.png"></a>
     
    <textarea rows="20" cols="80" name="text" wrap="virtual" onmouseover="this.focus();" id='text'>$data</textarea>
    L'évènement onmouseover, doit être remplacé par onmousedown dans mon code html pour le textarea ?

    Pourriez-vous m'aider pour le "bidouillage" de mon script en javascript ?

    Merci d'avance !

    Bonne soirée

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Non, normalement, tu devrais juste avoir à faire les modifications indiquées dans mon message précédent.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Avril 2010
    Messages : 4
    Par défaut
    D'accord, mais je ne vois pas ce que je dois modifier dans mon script...
    Faut-il modifier le comportement du "focus" ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
             text.focus(text.caretPos);
    Merci d'avance

  7. #7
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Billets dans le blog
    20
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Non, normalement, tu devrais juste avoir à faire les modifications indiquées dans mon message précédent.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

Discussions similaires

  1. Barre d'outil en javascript
    Par AurelienNF dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 31/08/2010, 22h46
  2. [VB6]Barre d'outil
    Par SpaceFrog dans le forum VB 6 et antérieur
    Réponses: 5
    Dernier message: 06/02/2003, 11h48
  3. [VBA-E] Barre d'outil créée automatiquement
    Par gjeff dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 12/12/2002, 16h45
  4. [VB6] [Interface] Icones de boutons de barre d'outils
    Par elifqaoui dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 13/09/2002, 15h50
  5. Barre d'outils
    Par MANU_2 dans le forum Composants VCL
    Réponses: 3
    Dernier message: 04/08/2002, 22h48

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