jquery:选择文本事件

是否有可能当用户选择一些文本(非文本区域或输入)时,jquery可以调用我的回调让我知道选择了哪个div文本,如果选择焦点丢失也可以调用我的回调?

谢谢。

有点令人惊讶的是,没有简单的方法可以做到这一点。 IE有一个在所有元素上实现的select事件,但是其他浏览器从未将其扩展到输入之外。 您将不得不在整个文档中处理keyupmouseup事件,即使这样,当选择没有实际更改时,也可能会调用回调。


2013年10月13日更新

WebKit浏览器已支持Document节点上的selectionchange事件几年。 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; 

你可以用它

使用

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