Jquery: выбрать текстовое событие

возможно ли, что, когда пользователь выбрал какой-либо текст (не textarea или input), jquery может вызвать мой обратный вызов, чтобы сообщить мне, какой div-текст выбран, а если фокус выбора потерян, также вызовите мой обратный вызов?

Спасибо.

Ответ 1

Несколько удивительно, что нет простого способа сделать это. IE имеет выбрать событие, которое реализовано на всех элементах, но другие браузеры никогда не расширили это за пределы ввода. Вам придется обрабатывать события keyup и mouseup на весь документ, и даже тогда ваш обратный вызов может быть вызван, когда выбор не изменился.


ОБНОВЛЕНИЕ 13 ОКТЯБРЯ 2013 ГОДА

Браузеры WebKit поддерживали событие selectionchange на узлах Document в течение нескольких лет. IE также поддерживает это событие до версии 5.5. Пример:

document.onselectionchange = function() {
    console.log("Selection changed");
};

Вот простой пример:

function selectCallback(selectionParentElement) {
    console.log("Selecting, parent element is " + selectionParentElement.nodeName);
}

var mouseOrKeyUpHandler;

if (typeof window.getSelection != "undefined") {
    // Non-IE
    mouseOrKeyUpHandler = function() {
        var sel = window.getSelection();
        if (sel.rangeCount > 0) {
            var range = sel.getRangeAt(0);
            if (range.toString()) {
                var selParentEl = range.commonAncestorContainer;
                if (selParentEl.nodeType == 3) {
                    selParentEl = selParentEl.parentNode;
                }
                selectCallback(selParentEl);
            }
        }
    };
} else if (typeof document.selection != "undefined") {
    // IE
    mouseOrKeyUpHandler = function() {
        var sel = document.selection;
        if (sel.type == "Text") {
            var textRange = sel.createRange();
            if (textRange.text != "") {
                selectCallback(textRange.parentElement());
            }
        }
    };
}

document.onmouseup = mouseOrKeyUpHandler;
document.onkeyup = mouseOrKeyUpHandler;

Ответ 2

вы можете использовать this

использовать <ELEMENT ondrag = "handler(event);" >

object.addEventListener( "drag", handler, bCapture);