2010-02-06 7 views
17

Nie oEvent.preventDefault(); pracować w GC? Muszę uniemożliwić wybór tekstu po uruchomieniu zdarzenia onmove.Jak mogę zapobiec zaznaczaniu tekstu w Google Chrome?

EDIT: Okazuje się być bardzo proste ...

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

Po tym, że nie ma wyboru tekst wyzwalane w przypadku ruchu (tj zdarzenia select - IE - rzeczywiście tj. !)

+0

Moim zdaniem lepiej jest zrobić to za pomocą tej metody (lub 'event.preventDefault()', która jest równoważna, ale nieco bardziej nowoczesna) niż próba powstrzymania selekcji za pomocą atrybutów CSS, które różnią się między przeglądarką i nie są " t to przewidywalne. –

Odpowiedz

43

-webkit-user-select: none Styl CSS określa, czy użytkownik może wybrać tekst elementu.

Przez wzgląd na kompletność, to dotyczy wszystkich przeglądarek wspierających (IE nie jest uważane za pomocą przeglądarki internetowej):

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

to zrobić za pośrednictwem JavaScript, wystarczy utworzyć klasę i dodać atrybuty węzła.

+1

Bardzo fajne, nie wiedziałem, że możesz to zrobić poprzez CSS. –

+0

Potrzebuję zrobić to przez JS. –

+9

IE nie jest uważana za przeglądarkę internetową? Jak to? –

19

Aby to zrobić przy użyciu JavaScript:

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 

Zauważ, że dla IE i Opera, atrybut unselectable nie jest dziedziczony przez dzieci elementu, więc wszelkie elementy potomne el będzie musiała unselectable być ustawione na "on".

+4

+1, jak to zrobić w IE. – Na7coldwater

Powiązane problemy