@H_502_5@解决方法
原文链接:https://www.f2er.com/jquery/152955.html
有点令人惊讶的是,没有简单的方法来做到这一点. IE有一个
select事件在所有元素上实现,但其他浏览器从未扩展到输入.您必须在整个文档上处理keyup和mouseup事件,即使如此,当选择没有实际更改时,您的回调也可能被调用.
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;