2010-11-17 3 views
0

Je veux retirer la sélection et vérifier le noeud de la sélection. J'essaie le code suivant. Mais je pense, je ne suis pas en mesure de pointer vers la sélection et donc le code échoue.Comment puis-je vérifier le noeud de la sélection en utilisant l'objet Range en javascript?

<head> 
<script type="text/javascript"> 
    function SelectAnchorNode() { 
     if (window.getSelection) {  // Firefox, Opera, Google Chrome and Safari 
      var selection = window.getSelection(); 
      if (selection.anchorNode) { 
       var rangeToSelect = document.createRange(); 
       alert(selection.anchorNode.nodeName); 

     } else { 
      alert ("Your browser does not support this example!"); 
     } 
    } 
</script> 
</head> 
<body> 
    <button onclick="SelectAnchorNode();">Click to check!</button> 
    <br /><br /> 
    <div> 
     <div>This is the first line.</div> 
     <p>This is the second line.</p> 
    </div> 
</body> 
+0

Qu'est-ce que vous en train d'essayer d'atteindre? –

Répondre

0

Vous avez quelques erreurs dans votre code, il vous manque un "}" pour fermer la fonction.

De plus, cette wont return true puisque la sélection est faite sur un bouton et non sur un point d'ancrage (lien)

Essayez ce code (je comprends si ce n'est pas ce que vous voulez, mais il rend votre travail par exemple)

<html> 
<head> 
<script type="text/javascript"> 
    function SelectAnchorNode() { 
     if (window.getSelection) {  // Firefox, Opera, Google Chrome and Safari 
      var selection = window.getSelection(); 
      if (selection.anchorNode) { 
       var rangeToSelect = document.createRange(); 
       alert(selection.anchorNode.nodeName); 
      } else { 
       alert ("Your browser does not support this example!"); 
      } 
     } 
    } 
</script> 
</head> 
<body> 
<a onclick="SelectAnchorNode();">Click to check!</a> 
<br /><br /> 
<div> 
    <div>This is the first line.</div> 
    <p>This is the second line.</p> 
</div> 

Comme vous pouvez le voir je l'ai remplacé "bouton" avec "un", et a ajouté un manquant "}"

EDIT!
Essayez cette ligne à la place, (je suppose maintenant que vous voulez obtenir la sélection effectuée par l'utilisateur, et que vous ne voulez pas créer une sélection avec le javascript?)

alert(selection.anchorNode.parentNode.nodeName); 

Selon l'endroit où vous commencez votre sélection vous obtiendrez des résultats différents, vous devez d'abord vérifier si un noeud de texte a été sélectionné ou non (puisque je pourrais faire une sélection directement dans le corps). Mais j'espère que cela vous rapproche de votre solution.

Cordialement
Tobias

+0

Désolé pour les bugs ... ceux qui ont été ajoutés au moment de l'édition ... Aussi, j'étais capable d'afficher la sortie "#text", mais j'ai besoin d'afficher le noeud de sélection, qui peut être p ou div basé sur sélection. Merci pour la réponse rapide. – KutePHP

+0

Est-ce que la partie que j'ai éditée vous aide? – Tobias

Questions connexes