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 :

Réduire la selection a son selstart (0) mais garder active


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut Réduire la selection a son selstart (0) mais garder active
    Bonjour a tous

    j'ai trouver un moyen pour l'insertion de mes images dans mon wysiwyg d'eviter le fakepath sur certaines config IE et chrome
    cela consiste a utiliser execCommand("insertimage",null,null) les deux argument a null permetant d'ouvrir une petite boite de dialogue avec le bouton parcourir

    cependant si il n'y a pas de selection active ca ne marche pas , j'ai pour cela creer une range sur la base de la selection vide ca c'est ok dans la fonction
    ce que je voudrais au cas ou il y aurait l'utilisateur qui pique une crise du syndrome de la tourette et donc selectionne du texte que cette selection se reduise a rien du tout mais reste a l'endroit ou elle est c'est a dire si il il a le texte

    bonjour regardez cette image elle est tellement belle


    et que je selectionne "image" je voudrais que la selection soit devant image avant de lancer execCommand

    pour ceux que ca interesse

    Code javascript : 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
    32
    33
    34
     
    //////////////////////////////////////////////////////////SOLUTION 1////////////////////////////////////////////////////////////
    function insertimg1(add){
       var selection =window.getSelection().getRangeAt(0)
       var baliseimg = document.createElement("img");
       baliseimg.src=add;
       baliseimg.width=300
       selection.insertNode(baliseimg);
    }
    //appel de la fonction avec bouton et!!! un input type file caché nommé 'fichier"://
    //dans le bouton 
    fichier.click();
    insertimg1(fichier.value);
    // IMPORTANT !!!! reste que selon certaines configs on se retrouve avec un FAKEPATH!!!!! dans le SRC de l'image 
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
     
    ///////////////////////////////////////////////////////////SOLUTION 2////////////////////////////////////////////////////////////
    function insertimg2(argmt,b,url){
       if (url==="undefined"){url=null;;b=null;}
       // il est important de determiner la selection (meme vide) sinon l'insertion se fait sur tout le document et remplace tout 
       var selection = window.getSelection().getRangeAt(0);
       window.getSelection().addRange(selection);             
       //l'avantage de execCommand c'est qu'il ouvre sa propre petite fenetre avec un bouton "parcourir" 
       //possibilité de regler dans cette fenetre l'alignement et le hspaces le src a  l'url du fichier local tel quel
       document.execCommand("insertimage",b,url);  
    }
    //appel de la fonction avec un bouton //
    //dans le bouton
    //si on connais l'url exemple 
    insertimg2("insertimage",false,"C:\dossier\mon_image.jpg");
    //si on veut la boite de dialog pour choisir
    insertimg(,"null","null");
     
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  2. #2
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Salut,

    Je vois que ça avance...

    Sinon pour ta question as-tu essayé ceci : https://developer.mozilla.org/fr/doc...Range/collapse ?

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    Bonjour beguiner oui ca avance il fonctionne sur mes 3 support moyenant quelques modifs pour mon support VBA

    je viens d'essayer collapse visiblement ca n'a pas le resultat ecompté la selection est bien remplacée

    je ne suis pas bien sur de comprendre collapse reuni tout les segments en un dans le range ou place la selection a droite ou gauche selon l'argument ?

    au pire j'essairais de faire comme pour pour mon clearspacerange avec un contextualfragment j'aurais voulu faire plus simple pour une fois
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Ben si tu veux une sélection "non nulle" a deux extrémités différentes un start et un end, avec collapse tu confonds les deux extrémités (elles deviennent égales) ---> la sélection est "nulle" (elle ne contient pas de texte) en fait c'est juste un curseur...

    Après avec collapse tu peux choisir de ramener les deux extrémités à celle de droite (start) ou celle de gauche (end)...

    Donc toi tu devrais faire : range.collapse(true); avant execCommand...

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    ok c'est bien ce que j'avais compris alors et ben ca marche pas
    Code javascript : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function insertimg2(argmt,b,url){
       if (url==="undefined"){url=null;;b=null;}
       // il est important de determiner la selection (meme vide) sinon l'insertion se fait sur tout le document et remplace tout 
       var selection = window.getSelection().getRangeAt(0);
       selection.collapse(true);
       window.getSelection().addRange(selection);             
       //l'avantage de execCommand c'est qu'il ouvre sa propre petite fenetre avec un bouton "parcourir" 
       //possibilité de regler dans cette fenetre l'alignement et le hspaces le src a  l'url du fichier local tel quel
       document.execCommand("insertimage",b,url);  
    }
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  6. #6
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Chez moi ça marche très bien mais c'est avec Chrome...

    As-tu bien sélectionner quelque chose avant ? Car le range peut être nul...(d’ailleurs il faudrait faire un test à chaque fois pour bien faire...)

  7. #7
    Membre Expert
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    2 910
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Octobre 2011
    Messages : 2 910
    Par défaut
    Citation Envoyé par patricktoulon Voir le message
    ...
    cela consiste a utiliser execCommand("insertimage",null,null) les deux argument a null permetant d'ouvrir une petite boite de dialogue avec le bouton parcourir
    J'ai essayé sur Chrome cela insère une balise <img> avec un src à null, il n'ouvre pas de boite de dialogue... Il faut que je regarde ça de plus prés...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réduire un formulaire dés son ouveture
    Par qmike dans le forum VBA Access
    Réponses: 2
    Dernier message: 05/06/2009, 08h38
  2. [RegEx] Réduire la selection d'une expression régulière
    Par spelou dans le forum Langage
    Réponses: 6
    Dernier message: 25/05/2009, 19h33
  3. Réduire la taille d'une Lite déroulante, mais ...
    Par Joe Le Mort dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 18/05/2006, 15h17
  4. Réponses: 4
    Dernier message: 13/12/2005, 18h14
  5. Réponses: 5
    Dernier message: 28/10/2005, 16h27

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