Триггер события выделенного текста в Javascript



Это может звучать вопрос новичка, но я хотел бы знать, как я могу вызвать функцию JavaScript, когда кто-то выбирает данный фрагмент текста на странице с помощью мыши. Также есть ли способ найти положение выделенного текста на веб-странице?



обновление:
Чтобы быть более ясным, фрагмент текста может быть частью предложения или слова или фразы или целого абзаца.

371   6  

6 ответов:

нет "текст был выбран"(DOM) событие, но вы можете связать mouseup событие document.body. В этом обработчике событий вы можете просто проверить

document.selection.createRange().text

или

window.getSelection()

методы. Есть несколько тем на Stackoverflow, как этот javascript, чтобы получить абзац выделенного текста на веб-странице.

Я не уверен, что вы имеете в виду с "найти позицию", но чтобы остаться в моем примере мира вы могли бы использовать элемент event propertys для X + Y позиции мыши.

пример:http://www.jsfiddle.net/2C6fB/1/

вот быстрый мэшап:

$('div').mouseup(function() {
    var text=getSelectedText();
    if (text!='') alert(text);
});

function getSelectedText() {
    if (window.getSelection) {
        return window.getSelection().toString();
    } else if (document.selection) {
        return document.selection.createRange().text;
    }
    return '';
}​

<div>Here is some text</div>

Demo:http://jsfiddle.net/FvnPS/11/

есть новый экспериментальный API, который занимается этим:

событие selectionchange API выбора запускается при изменении объекта выбора документа или при выборе, связанном с <input> или <textarea> изменения. Событие selectionchange запускается в документе в первом случае, в элементе во втором случае.

https://developer.mozilla.org/en-US/docs/Web/Events/selectionchange

обратите внимание, что это кровоточащий край и не гарантирует работу даже в основных браузерах.

использовать следующий код:

(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);
    }

})();

Это пример кода, который я использовал во время одного из моих назначений. Это сработало для меня.

AFAIK, нет такого события, которое вы описали. Но вы можете эмулировать эту функцию.

посмотри здесь для кода и демо.

есть событие" текст был выбран". Но только для textarea, как я знаю.

<textarea onselect="message()" name="summary" cols="60" rows="5">
请写入个人简介,不少于200字!
</textarea>

Comments

    Ничего не найдено.