是否有一个函数可以使用 JavaScript 取消选择所有文本?

在 javascript 中是否有一个函数可以取消选择所有选中的文本?我认为它应该是一个简单的全局函数,比如 document.body.deselectAll();之类的。

87265 次浏览

对于 Internet Explorer,你可以使用 document.select 对象的 空方法:

空() ;

有关跨浏览器解决方案,请参阅以下答案:

在 Firefox 中清除一个选区

试试这个:

function clearSelection()
{
if (window.getSelection) {window.getSelection().removeAllRanges();}
else if (document.selection) {document.selection.empty();}
}

这将清除任何主要浏览器中常规 HTML 内容中的选定内容。它不会清除文本输入中的选区或 Firefox 中的 <textarea>

这个版本可以清除任何选择,包括文本输入和文本区域:

演示: 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;
}
}
}
}

对于至少有10个字符的 textarea元素,下面的代码会做一个小的选择,然后在一秒半之后取消选择:

var t = document.getElementById('textarea_element');
t.focus();
t.selectionStart = 4;
t.selectionEnd = 8;


setTimeout(function()
{
t.selectionStart = 4;
t.selectionEnd = 4;
},1500);

这对我来说非常简单。

document.getSelection().collapseToEnd()

或者

document.getSelection().removeAllRanges()

来源: https://riptutorial.com/javascript/example/9410/deselect-everything-that-is-selected