用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.getSelection
或document.selection
浏览器,但没有一个.empty
或.removeAllRanges
该属性。