2010-02-06 15 views
17

oEvent.preventDefault(); GC'de çalışmak? Onmove olayı tetiklendiğinde metin seçmeyi önlemem gerekiyor.Google Chrome’da metin seçmeyi nasıl önleyebilirim?

DÜZENLEME: Bu çok kolay olduğu ortaya çıkıyor ... Bundan sonra

function disableSelection() { 
    document.onselectstart = function() {return false;} // ie 
    document.onmousedown = function() {return false;} // others 
} 
function enableSelection() { 
    document.onselectstart = null; // ie 
    document.onmousedown = null; // others 
} 

, hiçbir metin seçimi taşıma olayı (tetiklenir var yani seçme olayı - yani - gerçekten yani. !)

+0

Kanımca, bu yöntemle (veya eşdeğeri olan ama biraz daha modern olan) '' event.preventDefault() 'ile tarayıcı arasında farklılık gösteren CSS öznitelikleri aracılığıyla seçimin bastırılmasını denemekten daha iyidir. Bu öngörülebilir. –

cevap

43

-webkit-user-select: none CSS stili, kullanıcının öğenin
metnini seçmesine izin verilip verilmediğini denetler. tamlık uğruna

, bu (IE bir web tarayıcısı olarak kabul edilmez) tüm destekleyici tarayıcıları kapsar:

.no-select 
{ 
    user-select: none; 
    -o-user-select:none; 
    -moz-user-select: none; 
    -khtml-user-select: none; 
    -webkit-user-select: none; 
} 

sadece bir sınıf oluşturmak, JavaScript aracılığıyla bunu yapmak ve düğümün özelliklerini ekleyin. IE ve Opera için, unselectable nitelik böylece el herhangi alt öğeleri de ayarlanmış olması unselectable gerekecektir, bir elemanın çocuklar tarafından miras olmadığını

var el = document.getElementById("myElement"), s = el.style; 
s.userSelect = "none"; 
s.webkitUserSelect = "none"; 
s.MozUserSelect = "none"; 
el.setAttribute("unselectable", "on"); // For IE and Opera 

Not:

+1

Çok havalı, bunu CSS ile yapabileceğinizi bilmiyordum. –

+0

JS ile yapmam gerekiyor. –

+9

IE bir web tarayıcısı olarak kabul edilmez? O nasıl? –

19

JavaScript kullanarak bunu yapmak için "on".

+4

+1 kullanarak destekledi. – Na7coldwater

İlgili konular