Czy jQuery lub jQuery-UI ma jakąkolwiek funkcjonalność, która wyłącza zaznaczanie tekstu dla danych elementów dokumentu?
javascript
jquery
jquery-ui
Dawid Ohia
źródło
źródło
Odpowiedzi:
W jQuery 1.8 można to zrobić w następujący sposób:
źródło
Jeśli używasz jQuery UI, istnieje na to metoda, ale może ona obsłużyć tylko zaznaczanie myszką (tzn. CTRL+ ANadal działa):
Kod jest naprawdę prosty, jeśli nie chcesz używać interfejsu jQuery:
źródło
Uważam, że ta odpowiedź ( Zapobiegaj podświetlaniu tabeli tekstowej ) jest najbardziej pomocna i być może można ją połączyć z innym sposobem zapewnienia zgodności z IE.
źródło
Oto bardziej kompleksowe rozwiązanie wyboru rozłączania i anulowania niektórych skrótów klawiszowych (takich jak Ctrl+ ai Ctrl+ c. Test: Cmd + ai Cmd+ c)
i zadzwoń do przykładu:
jsfiddle.net/JBxnQ/
Może to również nie wystarczyć dla starych wersji FireFox (nie wiem, które). Jeśli to wszystko nie działa, dodaj:
źródło
attr('unselectable', 'on')
dwa razy? Czy to literówka, czy jest przydatne?Poniższe polecenie wyłączyłoby zaznaczenie „elementu” wszystkich klas we wszystkich popularnych przeglądarkach (IE, Chrome, Mozilla, Opera i Safari):
źródło
źródło
Można to łatwo zrobić za pomocą JavaScript. Dotyczy to wszystkich przeglądarek
Zadzwoń do tej funkcji
źródło
To jest naprawdę bardzo proste. Aby wyłączyć zaznaczanie tekstu (a także kliknąć + przeciąganie tekstu (np. Link w Chrome)), wystarczy użyć następującego kodu jQuery:
Wszystko to zapobiega domyślnemu działaniu po kliknięciu myszą (
mousedown()
) w tagachbody
ihtml
. Można bardzo łatwo zmienić element po prostu zmieniając tekst w między dwoma cytatami (np zmianę$('body, html')
do$('#myUnselectableDiv')
abymyUnselectableDiv
div być, dobrze, Nie można wybrać.Krótki urywek, który Ci to pokaże / udowodni:
Należy pamiętać, że ten efekt nie jest doskonały i działa najlepiej, a jednocześnie nie można wybrać całego okna. Możesz także dodać
również korzystając z powyższej części odpowiedzi Vladimira. (przejdź do jego posta tutaj )
źródło
1-liniowe rozwiązanie dla CHROME:
i FF:
IE wymaga ustawienia atrybutu „nie można wybrać” (szczegóły na dole).
Przetestowałem to w Chrome i działa. Ta właściwość jest dziedziczona, więc ustawienie jej w elemencie body spowoduje wyłączenie zaznaczenia w całym dokumencie.
Szczegóły tutaj: http://help.dottoro.com/ljrlukea.php
Jeśli używasz Closure, po prostu wywołaj tę funkcję:
Obsługuje wszystkie przeglądarki w przejrzysty sposób.
Przeglądarki inne niż IE są obsługiwane w następujący sposób:
Zdefiniowane tutaj: http://closure-library.googlecode.com/svn/!svn/bc/4/trunk/closure/goog/docs/closure_goog_style_style.js.source.html
Część IE jest obsługiwana w następujący sposób:
źródło
Myślę, że ten kod działa we wszystkich przeglądarkach i wymaga najmniejszego obciążenia. To naprawdę hybryda wszystkich powyższych odpowiedzi. Daj mi znać, jeśli znajdziesz błąd!
Dodaj CSS:
Dodaj jQuery:
Opcjonalne: Aby wyłączyć zaznaczanie również dla wszystkich elementów potomnych, możesz zmienić blok IE na:
Stosowanie:
źródło
Wypróbowałem wszystkie podejścia, a ten jest dla mnie najprostszy, ponieważ używam IWebBrowser2 i nie mam 10 przeglądarek, z którymi mogę się zmagać:
Działa idealnie dla mnie!
źródło
Jednym z rozwiązań tego problemu, w odpowiednich przypadkach, jest użycie
<button>
tekstu, którego nie chcesz wybierać. Jeśli wiążeszclick
zdarzenie z jakimś blokiem tekstu i nie chcesz, aby ten tekst był możliwy do wybrania, zmiana go na przycisk poprawi semantykę, a także uniemożliwi zaznaczenie tekstu.źródło
Najlepszy i najprostszy sposób, w jaki go znalazłem, zapobiega naciśnięciu klawiszy Ctrl + C, kliknięciu prawym przyciskiem myszy. W tym przypadku wszystko zablokowałem, więc nie muszę niczego określać.
źródło