2010-10-10 8 views
11

Próbuję zastosować user-select dla obu Opera 10.62 i IE9 bez powodzenia. Nie mogę/nie będę wiązał zdarzeń z kodem JavaScript, który jest preventDefault(), ponieważ jest tak wiele miejsc, które można ustawić jako niemożliwe do wybrania, i nadal muszę zachować selekcje w kilku miejscach. W rzeczywistości, chcę domyślne zachowanie się Nie można wybrać dla całego dokumentu, a jeśli chodzi o, że mam ustawić następujące w moim arkusza stylów:Czy użytkownik wybiera dla Opera 10.62 i IE9?

* { 
    -o-user-select: none; 
    -webkit-user-select: none; 
    -moz-user-select: -moz-none; 
    -khtml-user-select: none; 
    -ms-user-select: none; 
    user-select: none; 
} 

wszystko działa świetnie z Firefox 4, Chrome i Safari 7 5. Tylko IE9 i Opera 10.62 nie działają tak, jak bym chciał. Jakieś pomysły?

PS: Jestem nastawiony na nowoczesne przeglądarki.

+0

Patrz: http://stackoverflow.com/questions/826782/css-rule-to-disable-text-selection-highlighting – mahalie

Odpowiedz

7

Czy próbowałeś używać ::selection {color:currentColor;background:transparent}?
Dla przeglądarki Firefox można użyć ::-moz-selection.

https://developer.mozilla.org/En/CSS/::selection
http://msdn.microsoft.com/en-us/library/ff974109(v=VS.85).aspx
http://reference.sitepoint.com/css/pseudoelement-selection


// zmiana //
Istnieje również własność unselectable.

+1

Tak, ale to niezbyt dobre, ponieważ po prostu ukrywa selekcję. Nadal możesz przeciągnąć zaznaczenie i go skopiować. – Tower

+0

sprawdź moją aktualizację - i przeczytaj https://developer.mozilla.org/en/CSS/-moz-user-select "Kontroluje wygląd (tylko) wyboru. Nie ma to żadnego wpływu na rzeczywistą operację wyboru." – Knu

+1

Połączenie właściwości -user-select i unselectable przyniosło mi przyjemność w różnych przeglądarkach. – ajcw

2

Wybór użytkownika nie jest standardową właściwością CSS3, dlatego nie ma wyboru użytkownika ani opcji -o-user-select lub -ms-user-select. Dawniej był w starym interfejsie interfejsu użytkownika, ale został zastąpiony przez specyfikację Basic UI. Prawdopodobnie nigdy nie zostanie zaimplementowana przez żadną przeglądarkę, chyba że zostanie dodana do specyfikacji.

Wybór użytkownika jest raczej zachowaniem niż stylem, dlatego najlepiej używać JavaScript. Jak wspomniano powyżej Knu, możesz zamiast tego użyć opcji nie do wybrania.

+3

Ale to okropne, że dzieci nie odziedziczą "nieopisanego". Muszę więc zastosować to praktycznie dla wszystkiego, ręcznie. Mam tu i tam aplikację z tekstem, a domyślnie chcę, aby wszystko było niewybrane. Tylko wtedy, gdy chcę wyborów, zdefiniuję je. Tego podejścia nie można wdrożyć za pomocą opcji "unselectable". Ponadto właściwość działa, jeśli rozpoczniesz zaznaczanie tego elementu. Ctrl + A itp. Będzie działało z "niewybranym". – Tower

+0

Właściwie Opera ma "-o-user-select". Nie jestem pewien, która wersja, ale myślę, że miała ją 10,6. –

+1

@Tim Down: Jestem przekonany, że Opera nie obsługuje opcji -o-user-select. Nie jest on wymieniony w naszej specyfikacji http://www.opera.com/docs/specs/presto29/css/o-vendor/ i nie pojawia się również w Opera Dragonfly. –

0

jQuery:

$('.element').mousedown(function(e) { 
    e.preventDefault(); 
}); 

Ale może trzeba będzie dodać go zarówno do element i jego kontener.

0

-ms-user-select: none;

wydaje się działać dobrze teraz (IE 10/11)

+0

Wow! Sądziłem, że IE11 ma wspierać oficjalne standardy bez potrzeby używania hacków przeglądarkowych! Kiedy wprowadzili obsługę tego, dlaczego nie przejść bezpośrednio do standardu bez prefiksu przeglądarki? !!! (I owszem - testowałem w IE 11, działa tylko *** z *** prefiksem '-ms-') – awe

Powiązane problemy