Obtenir la Surbrillance/texte Sélectionné
Est-il possible d'obtenir le texte en surbrillance dans un paragraphe d'un site web par exemple par l'utilisation de jQuery?
- Voici une solution de travail dipaksblogonline.blogspot.dans/2014/11/...
- Javascript Simple a fonctionné pour moi. document.getSelection().anchorNode.les données.substr(document.getSelection().anchorOffset, document.getSelection().focusOffset-document.getSelection().anchorOffset)
- C'est seulement en passant de travail dans le cas simple d'une sélection qui est contenue dans un seul nœud de texte, ce qui n'est pas garanti d'être le cas.
- Comment avez-vous reproduire la social-la fonctionnalité de partage de ce blog, vous faites référence dans votre post? Au lieu de simplement retourner la chaîne sélectionnée, je suis en train de remplir cette variable dans un lien twitter.
Vous devez vous connecter pour publier un commentaire.
Obtenir le texte que l'utilisateur a sélectionné est relativement simple. Il n'y a aucun avantage à être gagné par l'implication de jQuery puisque vous avez besoin de rien d'autre que le
window
etdocument
objets.Si vous êtes intéressé par une mise en œuvre qui traitent aussi des sélections dans
<textarea>
et texty<input>
éléments, vous pouvez utiliser les éléments suivants. Depuis, il est maintenant à 2016, je suis en omettant le code nécessaire pour IE <= 8 support mais j'ai posté des trucs pour que, dans de nombreux endroits de la SORTE.JS:
HTML:
window.getSelection()
). Ledocument.selection.type
vérifier est de tester que la sélection est une sélection de texte plutôt qu'un contrôle de sélection. Dans IE, un contrôle de la sélection 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 les contours et les poignées de redimensionnement. Si vous appelez.createRange()
sur un tel choix, vous obtenez unControlRange
plutôt qu'unTextRange
, etControlRange
s ont pastext
de la propriété.today is a wonderful day
ensuite à l'utilisateur de sélectionnerday is a wonderful d
, il monde complet, sélectionnez l'ensemble de la phrase automaticlly.) Merci.TextRange
dans IE a unexpand()
de la méthode) et WebKit est un non-standardexpand()
méthode dans son DOM extension de la Gamme. Toutefois, cela ne permet pas de couvrir tous les navigateurs. Un (un peu lourd) option pour un cross-browser est la solution de TextRange module de mon propre Longiligne de la bibliothèque.document.execCommand()
: stackoverflow.com/questions/2582831/...input
être inclus, vous pouvez conditionnellement utiliser une combinaison dedocument.activeElement
et le modèle DOM des propriétésselectionStart
,selectionEnd
etvalue
de l'élément actif pour obtenir son texte sélectionné. Cela a été utile pour moi quand j'en avais besoin pour désactiver la gauche/la droite de balayage lorsque le texte dans la page a été sélectionné.textarea
s dans Firefox. C'est un bug connu..activeElement
et je ne vois pas l'intérêt de vérifier le type de l'élément ainsi que de.selectionStart
, qui est également soutenue par pratiquement tous les navigateurs. Peut-être que j'en oublie de penser à certains cas limites, mais au moins dans mon test étendu cas de la vôtre, votre code offre aucun avantage par rapport à la mienne; ils ont exactement le même: jsfiddle.net/6zoposby au lieu de jsfiddle.net/6zoposby/1.splice()
au lieu de.substring
btw? Est-il plus rapide? O. oselectionStart
ouselectionEnd
dans un<input>
type d'élément (tels que le "nombre") qui ne prend pas en charge (voir jsfiddle.net/6zoposby/2, par exemple). J'ai quitté la vérification de l'existence deselectionStart
de sorte que le code ne cassera pas dans IE <= 8. J'avoue que la case à cocher pouractiveElement
est probablement excessif maintenant. J'utiliseslice
car il est plus puissant (si ce n'est pas utile ici) et légèrement plus court à taper quesubstring
.selectionStart
, nous avons déjà un accord sur la suppression de la 2ème branche à partir de votre premier code de toute façon, ce qui a également pour assurer la compatibilité avec IE ci-dessous v9.. 😉input
champs? n'est-il pas possible de récupérer le contenu d'undiv
?div
s. Quelqu'un a alors demandé une analyse plus générale de la solution qui couvre les cas où la sélection est à l'intérieur d'uninput
outextarea
, donc je suis obligé. Si vous n'avez pas besoin que vous pouvez simplement utiliser la première version de la fonction.Obtenir le texte en surbrillance de cette façon:
et bien sûr un traitement spécial pour ie:
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 les autres navigateurs) et si le texte se trouve dans la même Élément du DOM: