web-dev-qa-db-fra.com

Javascript: comment détecter si un mot est mis en surbrillance

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.

48
user369246

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;
71
Tim Down

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.

3
Tom Gullen