用JavaScript清除文本select

简单的问题,我找不到答案:我怎样才能使用JavaScript(或jQuery)取消select可能在网页上select的任何文字? EG用户点击并拖动以突出显示一些文本 – 我想要一个函数deselectAll()来清除这个select。 我该怎么写呢?

谢谢您的帮助。

if (window.getSelection) { if (window.getSelection().empty) { // Chrome window.getSelection().empty(); } else if (window.getSelection().removeAllRanges) { // Firefox window.getSelection().removeAllRanges(); } } else if (document.selection) { // IE? document.selection.empty(); } 

感谢Y先生。

最好直接testing你想要的function:

 var sel = window.getSelection ? window.getSelection() : document.selection; if (sel) { if (sel.removeAllRanges) { sel.removeAllRanges(); } else if (sel.empty) { sel.empty(); } } 

2014年取消事务状况

我做了一些我自己的研究。 以下是我写和正在使用的函数:

 (function deselect(){ var selection = ('getSelection' in window) ? window.getSelection() : ('selection' in document) ? document.selection : null; if ('removeAllRanges' in selection) selection.removeAllRanges(); else if ('empty' in selection) selection.empty(); })(); 

基本上,所有现代浏览器(包括IE9 +)都支持getSelection().removeAllRanges() )。 这显然是前进的正确方法。

兼容性问题占:

  • 旧版Chrome和Safari使用getSelection().empty()
  • IE8及以下使用document.selection.empty()

更新

总结这个selectfunction重用可能是一个好主意。

 function ScSelection(){ var sel=this; var selection = sel.selection = 'getSelection' in window ? window.getSelection() : 'selection' in document ? document.selection : null; sel.deselect = function(){ if ('removeAllRanges' in selection) selection.removeAllRanges(); else if ('empty' in selection) selection.empty(); return sel; // chainable :) }; sel.getParentElement = function(){ if ('anchorNode' in selection) return selection.anchorNode.parentElement; else return selection.createRange().parentElement(); }; } // use it var sel = new ScSelection; var $parentSection = $(sel.getParentElement()).closest('section'); sel.deselect(); 

我已经把这个社区维基做成这样,你可以添加function,或者随着标准的发展而更新。

window.getSelection()让你访问选定的文本,从那里,你可以做一些事情来操纵它..

阅读更多: 开发人员Mozilla DOMselect

这是接受的答案,但在两行代码中:

 var selection = window.getSelection ? window.getSelection() : document.selection ? document.selection : null; if(!!selection) selection.empty ? selection.empty() : selection.removeAllRanges(); 

唯一的检查我不做的是存在removeAllRanges – 但AFAIK没有window.getSelectiondocument.selection浏览器,但没有一个.empty.removeAllRanges该属性。