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 :

[AJAX] Récupérer le DOM sélectionné


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Par défaut [AJAX] Récupérer le DOM sélectionné
    Bonjour à tous,

    Je suis confronté à un problème de Javascript.
    Je souhaite récupérer tous les éléments HTML contenus dans une sélection faite avec la souris. J'arrive sans problème à récupérer le texte sélectionné, mais impossible de trouver un solution pour récupérer les objets du DOM (les balises HTML).

    Connaissez-vous une solution ?

    Merci

  2. #2
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Par défaut
    Bonjour,
    Pour récupérer les éléments, tu peux passer par le fait d'obtenir la liste des enfant du noeud qui contient tes éléments.
    Ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <DIV id="maDiv">
    <INPUT type=checkbox value=001 ID="Checkbox1">
    <INPUT type=checkbox value=002 ID="Checkbox2">
    </DIV>
    Pour récupérer les checkboxes (et éventuellement vérifier s'il ont étés sélectionnés) :
    document.getElementByID("meDiv").children
    puis pour chaque noeud enfant, je peux récupérer le innerText ou l'innerHTML
    qui te donnerons le contenu des balises sans interprétation...

    @+
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  3. #3
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Par défaut
    Merci de ta réponse,

    Je n'ai pas dû bien expliquer mon problème.

    Imaginons un utilisateur qui sélectionne une partie d'une page web, par exemple "du texte avec un mot en gras".
    Le but étant alors de récupérer tous le dom sélectionné par l'utilisateur, c'est-à-dire les nodes :
    ...-TEXT avec pour valeur : "du texte avec "
    ...- BOLD avec pour valeur :
    ......- TEXT avec pour valeur : "un mot"
    ...- TEXT avec pour valeur : " en gras"
    Tous le DOM sélectionné en fait.

    Ca ne semble pourtant pas très compliquer comme ça, je pense donc que ça doit bien être possible.

  4. #4
    Rédacteur
    Avatar de benji_dv
    Homme Profil pro
    Architecte
    Inscrit en
    Juillet 2005
    Messages
    375
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 375
    Par défaut
    Bonjour,

    Essai ca : (je nai aucun mérite je l'ai trouvé là : http://www.quirksmode.org/js/selected.html
    et je n'ai que modifié la fin : alert...)

    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
    function getSel()
    {
    	var txt = '';
    	var foundIn = '';
    	if (window.getSelection)
    	{
    		txt = window.getSelection();
    		foundIn = 'window.getSelection()';
    	}
    	else if (document.getSelection)
    	{
    		txt = document.getSelection();
    		foundIn = 'document.getSelection()';
    	}
    	else if (document.selection)
    	{
    		txt = document.selection.createRange().text;
    		foundIn = 'document.selection.createRange()';
    	}
    	else return;
    	alert( 'Found in: ' + foundIn + '\n' + txt);
    }
    les trois moyens de récupérer le texte sélectionné dépendent du navigateur,
    visite la page que j'ai placé ci dessus pour complément d'info

    @+

    [Eric Berger]Balises code ajoutées, merci d'y penser à l'avenir
    Benjamin DEVUYST
    Et comme l'a dit Rick Osborne
    "Always code as if the guy who ends up maintaining your code will be a violent psychopath who knows where you live"
    http://bdevuyst.developpez.com
    http://blog.developpez.com/bdevuyst
    www.bdevuyst.com

  5. #5
    Membre habitué
    Inscrit en
    Mars 2006
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2006
    Messages : 10
    Par défaut
    Encore merci pour ton aide, mais...

    Récupérer le TEXTE sélectionné, j'y arrive. Mais j'ai besoin de récupérer les NODES sélectionnés.
    Au finial, je doit donc obtenir, non pas une simple chaine, mais un tableau d'éléments HTML, le petit bout de l'arbre DOM qui est sélectionné.

    Je cherche... et suis preneur d'idées ;-)

  6. #6
    Membre expérimenté
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    304
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Distribution

    Informations forums :
    Inscription : Janvier 2003
    Messages : 304
    Par défaut
    Salut,
    Petite piste : regarde comment fait l'éditeur que tu as utilisé (vbulletin) pour poster ton message sur ce forum. Sous firefox, en utilisant le plugin web developer, tu peux voir les fichiers javascript utilisés par une page. Voici ce que j'ai pu trouvé :
    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
     
    		/**
    		* Get Selected Text
    		*/
    		this.get_selection = function()
    		{
    			var range = this.editdoc.selection.createRange();
    			if (range.htmlText && range.text)
    			{
    				return range.htmlText;
    			}
    			else
    			{
    				var do_not_steal_this_code_html = '';
    				for (var i = 0; i < range.length; i++)
    				{
    					do_not_steal_this_code_html += range.item(i).outerHTML;
    				}
    				return do_not_steal_this_code_html;
    			}
    		};
    Sachant que this.editdoc est trés probablement un simple textarea.

    Je pense que tu peux accéder aux noeuds sous mozilla avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    var node = range.startContainer;
    var pos = range.startOffset;
    Bon courage !

    Y.Chaouche

Discussions similaires

  1. Réponses: 3
    Dernier message: 28/03/2012, 11h26
  2. [JTree] Récupérer le noeud sélectionné, sans événement
    Par Bobsinglar dans le forum Composants
    Réponses: 4
    Dernier message: 26/05/2005, 18h06
  3. Réponses: 2
    Dernier message: 13/11/2003, 15h13

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