当用户选择一些文本(非文本区域或输入)时,jquery 是否可以调用我的回调来让我知道选择了哪个 div 的文本,并且如果选择焦点丢失也调用我的回调?
Thanks.
有点令人惊讶的是,没有简单的方法可以做到这一点。 IE 有一个select在所有元素上实现的事件,但其他浏览器从未将其扩展到输入之外。你必须处理keyup
and mouseup
整个文档上的事件,即使这样,当选择实际上没有更改时,您的回调也可能会被调用。
2013 年 10 月 13 日更新
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;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)