Seçimden Çıkarma İşleri 2014
Kendi kendime biraz araştırma yaptım. İşte bugünlerde yazdığım ve kullandığım işlev:
(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();
})();
Temel olarak, getSelection().removeAllRanges()şu anda tüm modern tarayıcılar (IE9 + dahil) tarafından desteklenmektedir. Bu açıkça ilerleyen doğru yöntemdir.
Uyumluluk sorunları şunları hesaba katar:
- Chrome ve Safari'nin eski sürümleri kullanıldı
getSelection().empty()
- IE8 ve altı kullanıldı
document.selection.empty()
Güncelleme
Yeniden kullanım için bu seçim işlevini tamamlamak muhtemelen iyi bir fikirdir.
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();
Bunu bir topluluk wiki'si yaptım, böylece sizler buna işlevsellik ekleyebilir veya standartlar geliştikçe bir şeyleri güncelleyebilirsiniz.
document.selection, varlığının birempty()yönteminin varlığını ima ettiğini varsayar . Diğer her durumda yöntemi test ettiniz, bu nedenleemptyson durumda da test edebilirsiniz .