Подтвердить что ты не робот

Javascript: как определить, выделено ли слово

Я пишу аддон Firefox, который запускается всякий раз, когда слово подсвечивается. Однако мне нужен script, который определяет, когда выделено слово, и я застрял. Примером может служить nytimes.com(когда вы читаете статью и выделяете слово, появляется значок ссылки). Однако nytimes.com script супер сложный. Мне 16 лет, и я не очень программист, так что это определенно выход из моей лиги.

4b9b3361

Ответ 1

Самый простой способ сделать это - обнаружить события 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;

Ответ 2

Вот script:

<script language=javascript>
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>

Предоставлено Code Toad:

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

В вашем случае вы хотели бы вызвать этот script при выборе, а затем вы можете обработать его, как вам угодно, с запросом AJAX для получения соответствующей информации, например, например, NYtimes.

Ответ 3

Используя rangy.js и jQuery:

$('#elem').on('keyup mouseup', function(){
    var sel = rangy.getSelection()
    if (sel.rangeCount === 0 || sel.isCollapsed) return
    alert(sel.toString())
})

Ответ 4

Используйте следующий код

(function () {
        "use strict";
        var showSelectedText = function (e) {
            var text = '';
            if (window.getSelection) {
                text = window.getSelection();
            } else if (document.getSelection) {
                text = document.getSelection();
            } else if (document.selection) {
                text = document.selection.createRange().text;
            }

            console.log(text.toString());
        }

        document.onmouseup = showSelectedText;
        if (!document.all) {
            document.captureEvents(Event.MOUSEUP);
        }

 })();