回答:
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();
}
window.getSelection().removeAllRanges();
IE(edge)とSafariで正常に動作することを確認します。
私は自分でいくつかの調査を行いました。ここに私が書いて最近使用している関数があります:
(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();
})();
基本的にgetSelection().removeAllRanges()
は、現在すべての最新のブラウザー(IE9 +を含む)でサポートされています。これは明らかに正しい方法です。
考慮される互換性の問題:
getSelection().empty()
document.selection.empty()
この選択機能を再利用するためにまとめることは、おそらく良い考えです。
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();
私はこれをコミュニティーwikiにしたので、ユーザーはこれに機能を追加したり、標準の進化に応じて更新したりできます。
受け入れられた答えは次のとおりですが、2行のコードです。
var selection = window.getSelection ? window.getSelection() : document.selection ? document.selection : null;
if(!!selection) selection.empty ? selection.empty() : selection.removeAllRanges();
のみremoveAllRangesの存在のためである私はしていないチェック-しかし、私の知る限りではどちらか持っている何のブラウザが存在しないwindow.getSelection
かdocument.selection
が、ありません持っているのいずれか.empty
または.removeAllRanges
そのプロパティの。
window.getSelection()を使用すると、選択したテキストにアクセスできます。そこから、テキストを操作するために実行できることがいくつかあります。
続きを読む:開発者Mozilla DOM選択
これをスクリプトに追加して、右クリックやテキスト選択を防止します。
例外はvar 'om'に追加できます。
var d=document,om=['input','textarea','select'];;
function ie(){if(d.all){(mg);return false;}}function mz(e){if(d.layers||(d.getElementById&&!d.all)){if(e.which==2||e.which==3){(mg);return false;}}}if(d.layers){d.captureEvents(Event.mousedown);d.onmousedown=mz;}else{d.onmouseup=mz;d.oncontextmenu=ie;}d.oncontextmenu=new Function('return false');om=om.join('|');function ds(e){if(om.indexOf(e.target.tagName.toLowerCase())==-1);return false;}function rn(){return true;}if(typeof d.onselectstart!='undefined')d.onselectstart=new Function('return false');else{d.onmousedown=ds;d.onmouseup=rn;}
document.selection
、の存在がそのempty()
メソッドの存在を意味すると想定しています。他のすべてのケースでメソッドをテストしたのでempty
、最後のケースでもテストする可能性があります。