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 :

Aide à la sélection


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut Aide à la sélection
    Salut tout le monde,
    je cherche à sélectionner un contenu d'une page web en utilisant javascript, j'ai bien cherché comment faire, mais j'ai rien trouvé...y a uniquement la fonction select() concernant les champs de saisie.
    ehh, je m'explique on suppose le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <html>
      <head></head>
      <body>
        <p>à sélectionner</p>
        <input type="button" onclick="selectionner()" value="sélectionner" />
      </body>
    </html>
    la question est comment faire pour sélectionner le contenu de la balise P?
    est-ce possible? :/

  2. #2
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    bonsoir,

    justement pourquoi ne pas utiliser la fonction select ?
    Tu peux faire passer un textarea pour un paragraphe grâce à une feuille de style qui supprime les bordures et l'ascenseur :
    Code html : 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
     
    <html>
    <head>
    <title></title>
    <style type="text/css">
    <!--
    #idTxt{
     border: none;
     overflow: hidden;
    }
     
    //-->
    </style>
     
    <script type="text/javascript">
    <!--
    function  selectionner()
    {
      document.getElementById("idTxt").select();
    }
     
    //-->
    </script>
     
    </head>
     
    <body>
     
        <textarea id="idTxt" readonly="readonly">à sélectionner</textarea><br />
        <input type="button" onclick="selectionner()" value="sélectionner" />
     
    </body>
     
    </html>

  3. #3
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Yop!

    Et ceci?
    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
     
    <html>
      <head>
      <script language="javascript">
      function selectionner(theid)
      {
        var p = document.getElementById(theid);
        var textrg = document.body.createTextRange();
        textrg.findText(p.innerText);
        textrg.select();
      }	  
      </script>
      </head>
      <body>
        <p id="lep">à sélectionner</p>
        <input type="button" onclick="selectionner('lep')" value="sélectionner" />
      </body>
    </html>

  4. #4
    Membre averti
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut
    Citation Envoyé par ryan
    Yop!

    Et ceci?
    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
     
    <html>
      <head>
      <script language="javascript">
      function selectionner(theid)
      {
        var p = document.getElementById(theid);
        var textrg = document.body.createTextRange();
        textrg.findText(p.innerText);
        textrg.select();
      }
      </script>
      </head>
      <body>
        <p id="lep">à sélectionner</p>
        <input type="button" onclick="selectionner('lep')" value="sélectionner" />
      </body>
    </html>
    merci ryan, c'est exactement ce que je recherche

  5. #5
    Expert confirmé
    Avatar de Auteur
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    7 660
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 7 660
    Par défaut
    le code de Ryan n'est pas compatible avec Firefox (à cause de createTextRange() et innerText).


    E.Bzz >> au moment du clic, modife la couleur du fond et celui de la police, le texte sera ainsi "sélectionné"

  6. #6
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par Auteur
    E.Bzz >> au moment du clic, modife la couleur du fond et celui de la police, le texte sera ainsi "sélectionné"
    Oui c'est vrai, si c'est pour l'apparence ...
    Mais je pensais qu'il y avait peut-être une histoire de copié/collé automatisé derrière tout ça

    A+

  7. #7
    Membre Expert
    Avatar de ryan
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2003
    Messages
    956
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2003
    Messages : 956
    Billets dans le blog
    1
    Par défaut
    Yop!

    Citation Envoyé par Auteur
    le code de Ryan n'est pas compatible avec Firefox (à cause de createTextRange() et innerText).
    Voui, j'avais essayé autrement: une fonction récursive qui parcourait l'arbre en-dessous de l'objet choisi comme parent(ici un p), faisait le tri selon le type de noeud pour ne récupérer que les textes, mais je me suis ramassé un message d'erreur (out of memory) dont je ne suis pas parvenu à comprendre la cause exacte, donc j'ai laissé tomber le choli code cross-browser.

    Là je suis en plein taf (si si), mais je vais ré-essayer ce soir si j'ai du temps.

  8. #8
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Bonjour,
    Citation Envoyé par memberteam
    la question est comment faire pour sélectionner le contenu de la balise P?
    Il y a plus simple, non ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p id="la_zone">à sélectionner</p>
        <input type="button" onclick="alert(document.getElementById('la_zone').innerHTML);" value="sélectionner" />
    A+

    EDIT : plus simple mais pas de selection, donc hors sujet => on oublie

  9. #9
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Alors, visiblement, plutôt que la recherche "dans la page", il vaut mieux que tu fasses un parcours de l'arborescence de tes objets (DOM), avec test sur le type (<p> ou pas), puis sur le data (= texte cherché ou pas).
    Ensuite, comme suggéré par Auteur, tu change le style pour que, à l'affichage, cette fois, le texte soit "sélectionné".
    Comme dans ton code tu seras "dessus", et qu'il sera sélectionné à l'écran, tu auras, fonctionnellemnt, exactement le même résultat et les même possibilités ...

    A+

  10. #10
    Membre averti
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut
    en effet, je me retrouve dans le noeud où je dois lancer la recherche.
    mais document.body.createTextRange() sélectionne tout le contenu du body, or il se peut que le texte contenu dans le noeud figure dans un autre endroit donc quand je lance la fonction findText de TextRange relatif au document.body le texte dont j'en ai rien à faire sera inclu dans la sélection

    vous trouverez ci-joint le script implémentant la fonction range...
    Fichiers attachés Fichiers attachés

  11. #11
    Expert éminent

    Homme Profil pro
    Inscrit en
    Janvier 2007
    Messages
    13 474
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2007
    Messages : 13 474
    Par défaut
    Citation Envoyé par memberteam
    mais document.body.createTextRange() sélectionne tout le contenu du body, or il se peut que le texte contenu dans le noeud figure dans un autre endroit donc quand je lance la fonction findText de TextRange relatif au document.body le texte dont j'en ai rien à faire sera inclu dans la sélection
    La solution que je te proposais visait justement à NE PLUS utiliser ces 2 fonctions ...

    A+

  12. #12
    Membre averti
    Inscrit en
    Août 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 16
    Par défaut
    oui mais pour string-range, elle sélectionne une partie du data, mais pas tout, donc si je joue sur le style d'un noeud ceci va influencer le résultat visuel
    par exemple si j'appelle string-range(/p, "à sélec")
    ceci doit sélectionner uniquement les occurences de cette sous chaine

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

Discussions similaires

  1. Demande d'aide pour sélection de date
    Par eliniel dans le forum Macros et VBA Excel
    Réponses: 27
    Dernier message: 23/09/2014, 09h49
  2. Aide sur sélection doublon
    Par Aluminium_Overcast dans le forum z/OS
    Réponses: 5
    Dernier message: 27/06/2012, 09h10
  3. Réponses: 2
    Dernier message: 02/03/2006, 17h38
  4. Réponses: 1
    Dernier message: 03/08/2005, 11h41
  5. Aide sur une requete de sélection
    Par stephdiplo150 dans le forum Langage SQL
    Réponses: 4
    Dernier message: 16/01/2004, 10h40

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