web-dev-qa-db-ja.com

Javascript:Wordが強調表示されているかどうかを検出する方法

Wordが強調表示されるたびにトリガーされるFirefoxアドオンを作成しています。ただし、Wordが強調表示されたときにそれを検出するスクリプトが必要で、行き詰まっています。たとえば、nytimes.com(記事を読んでいるときにWordを強調表示すると、参照アイコンがポップアップ表示されます)。ただし、nytimes.comスクリプトは非常に複雑です。私は16歳でプログラマーではありませんので、それは間違いなく私のリーグから抜け出します。

48
user369246

これを行う最も簡単な方法は、ドキュメント上のmouseupおよびkeyupイベントを検出し、テキストが選択されているかどうかを確認することです。以下はすべての主要なブラウザで動作します。

例: 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

スクリプトは次のとおりです。

<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>

コードヒキガエルの礼儀:

http://www.codetoad.com/javascript_get_selected_text.asp

あなたの場合は、選択が行われたときにこのスクリプトを呼び出してから、たとえばAJAX NYtimesなどの関連情報を取得するリクエストします。

3
Tom Gullen