Est-il possible d'obtenir le texte en surbrillance dans un paragraphe d'un site Web, par exemple en utilisant jQuery?
351
Est-il possible d'obtenir le texte en surbrillance dans un paragraphe d'un site Web, par exemple en utilisant jQuery?
Réponses:
Obtenir le texte que l'utilisateur a sélectionné est relativement simple. Il n'y a aucun avantage à gagner en impliquant jQuery puisque vous n'avez besoin de rien d'autre que les objets
window
etdocument
.Si vous êtes intéressé par une implémentation qui traitera également des sélections
<textarea>
et des<input>
éléments textuels , vous pouvez utiliser ce qui suit. Comme c'est maintenant 2016, j'omet le code requis pour la prise en charge IE <= 8, mais j'ai publié des trucs pour cela à de nombreux endroits sur SO.la source
window.getSelection()
). Ladocument.selection.type
vérification teste que la sélection est une sélection de texte plutôt qu'une sélection de contrôle. Dans IE, une sélection de contrôle est une sélection à l'intérieur d'un élément modifiable contenant un ou plusieurs éléments (tels que des images et des contrôles de formulaire) avec des contours et des poignées de redimensionnement. Si vous faites appel.createRange()
à une telle sélection, vous obtenez unControlRange
plutôt qu'unTextRange
, et lesControlRange
s n'ont aucunetext
propriété.selectionStart
ouselectionEnd
dans un<input>
type d'élément (tel que "nombre") qui ne fonctionne pas supportez-le (voir jsfiddle.net/6zoposby/2 , par exemple). J'ai laissé la vérification de l'existence deselectionStart
afin que le code ne se casse pas dans IE <= 8. J'avoue que la vérificationactiveElement
est probablement exagérée maintenant. J'utiliseslice
parce qu'il est plus puissant (bien que ce ne soit pas utile ici) et légèrement plus court à taper quesubstring
.Obtenez le texte en surbrillance de cette façon:
et bien sûr un traitement spécial pour:
la source
document.selection
support a été supprimé dans IE10 et remplacé parwindow.getSelection
». Source: connect.microsoft.com/IE/feedback/details/795325/…Cette solution fonctionne si vous utilisez Chrome (ne peut pas vérifier d'autres navigateurs) et si le texte se trouve dans le même élément DOM:
la source
Utilisez
window.getSelection().toString()
.Vous pouvez en savoir plus sur developer.mozilla.org
la source