State of De-selection Affairs 2014
Saya melakukan penelitian sendiri. Inilah fungsi yang saya tulis dan saya gunakan hari ini:
(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();
})();
Pada dasarnya, getSelection().removeAllRanges()saat ini didukung oleh semua browser modern (termasuk IE9 +). Ini jelas merupakan metode yang benar untuk maju.
Masalah kompatibilitas diperhitungkan:
- Versi lama Chrome dan Safari digunakan
getSelection().empty()
- IE8 dan di bawahnya digunakan
document.selection.empty()
Memperbarui
Mungkin ide yang bagus untuk menyelesaikan fungsionalitas pemilihan ini untuk digunakan kembali.
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();
Saya telah membuat wiki komunitas ini sehingga Anda sekalian dapat menambahkan fungsionalitas pada ini, atau memperbarui berbagai hal seiring perkembangan standar.
document.selectionmenyiratkan keberadaanempty()metode itu. Anda telah menguji metode dalam setiap kasus lain, jadi Anda mungkin juga mengujiemptydalam kasus terakhir juga.