J'écris un addon Firefox qui se déclenche chaque fois qu'un mot est mis en surbrillance. Cependant, j'ai besoin d'un script qui détecte lorsqu'un mot est mis en surbrillance et je suis bloqué. Un exemple serait nytimes.com (lorsque vous lisez un article et que vous mettez un mot en surbrillance, l'icône de référence apparaît). Cependant, le script nytimes.com est super complexe. J'ai 16 ans et je ne suis pas très programmeur, donc c'est définitivement hors de ma ligue.
La méthode la plus simple consiste à détecter les événements mouseup
et keyup
sur le document et à vérifier si du texte est sélectionné. Les éléments suivants fonctionneront dans tous les principaux navigateurs.
Exemple: http://www.jsfiddle.net/timdown/SW54T/
function getSelectedText() {
var text = "";
if (typeof window.getSelection != "undefined") {
text = window.getSelection().toString();
} else if (typeof document.selection != "undefined" && document.selection.type == "Text") {
text = document.selection.createRange().text;
}
return text;
}
function doSomethingWithSelectedText() {
var selectedText = getSelectedText();
if (selectedText) {
alert("Got selected text " + selectedText);
}
}
document.onmouseup = doSomethingWithSelectedText;
document.onkeyup = doSomethingWithSelectedText;
Voici un script:
<script>
function getSelText()
{
var txt = '';
if (window.getSelection)
{
txt = window.getSelection();
}
else if (document.getSelection)
{
txt = document.getSelection();
}
else if (document.selection)
{
txt = document.selection.createRange().text;
}
else return;
document.aform.selectedtext.value = txt;
}
</script>
<input type="button" value="Get selection" onmousedown="getSelText()">
<form name="aform">
<textarea name="selectedtext" rows="5" cols="20"></textarea>
</form>
Gracieuseté de Code Toad:
http://www.codetoad.com/javascript_get_selected_text.asp
Dans votre cas, vous voudriez appeler ce script lorsque la sélection est faite, puis vous pouvez le traiter comme vous le souhaitez, avec une demande AJAX pour obtenir des informations pertinentes par exemple, comme NYtimes probablement Est-ce que.