Answers:
试试这个:
function clearSelection()
{
if (window.getSelection) {window.getSelection().removeAllRanges();}
else if (document.selection) {document.selection.empty();}
}
这将清除任何主要浏览器中常规HTML内容中的选择。它不会清除文本输入或<textarea>
Firefox中的选择。
removeAllRanges()
方法在所有当前浏览器中都适用于段落或类似的非格式字段元素中的文本。对于表单域(如textarea),此方法在IE9和FF5中不起作用。
window.getSelection().removeAllRanges();
第一因为它是符合标准的,专有的代码应该总是被执行最后。无论是2004年还是符合4004标准的代码最终都将最终成为我们使用的代码,因此请毫无例外地首先对其进行检测!
这是一个将清除所有选择的版本,包括文本输入和文本区域内:
演示:http://jsfiddle.net/SLQpM/23/
function clearSelection() {
var sel;
if ( (sel = document.selection) && sel.empty ) {
sel.empty();
} else {
if (window.getSelection) {
window.getSelection().removeAllRanges();
}
var activeEl = document.activeElement;
if (activeEl) {
var tagName = activeEl.nodeName.toLowerCase();
if ( tagName == "textarea" ||
(tagName == "input" && activeEl.type == "text") ) {
// Collapse the selection to the end
activeEl.selectionStart = activeEl.selectionEnd;
}
}
}
}
<div>
则该mouseup
事件不会触发。相反,将mouseup处理程序放在文档上就可以了:jsfiddle.net/SLQpM/23
对于Internet Explorer,可以使用document.selection对象的empty方法:
document.selection.empty();
有关跨浏览器的解决方案,请参见以下答案:
document.selection.clear()
起作用。参见此处:jsfiddle.net/9spL8/4另外,此方法将删除选定的文本,而不仅仅是取消选中它。要仅取消选择文本,请改用。document.selection.empty()
这对我来说非常容易...
document.getSelection().collapseToEnd()
要么
document.getSelection().removeAllRanges()
积分:https : //riptutorial.com/javascript/example/9410/deselect-everything-that-is-selected
window.getSelection().removeAllRanges();
可以在所有当前的浏览器中使用。现场演示: jsfiddle.net/hWMJT/1