Obsługuję zdarzenie dblclick w zakresie w mojej aplikacji internetowej. Efektem ubocznym jest to, że podwójne kliknięcie zaznacza tekst na stronie. Jak mogę zapobiec tej selekcji?
javascript
selection-object
David
źródło
źródło
-ms-user-select: none;
patrz blogs.msdn.com/b/ie/archive/2012/01/11/… @PaoloBergantinoProstym javascript:
Lub z jQuery:
źródło
return false
używanychevent.preventDefault()
, które nie zabija wszelkie inne ładowarki mogą mieć na mousedown.element
jest to obszar tekstowy , tak.Aby zapobiec zaznaczaniu tekstu TYLKO po podwójnym kliknięciu:
Możesz użyć
MouseEvent#detail
nieruchomości. W przypadku zdarzeń mousedown lub mouseup jest to 1 plus bieżąca liczba kliknięć.Zobacz https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
źródło
(event.detail === 2)
aby naprawdę zapobiec TYLKO podwójnemu kliknięciu (a nie potrójnemu kliknięciu itp.)FWIW, zestaw
user-select: none
do elementu nadrzędnego tych elementów podrzędnych, które nie chcę jakoś wybrany, gdy podwójne kliknięcie w dowolnym miejscu elementu nadrzędnego. I to działa! Fajne jest tocontenteditable="true"
, że zaznaczanie tekstu itp. Nadal działa na elementach potomnych!Tak jak:
źródło
style="user-select: note"
wszędzie rozwiązało problem, który próbowałem rozwiązać :)Prosta funkcja JavaScript, która sprawia, że zawartość wewnątrz elementu strony jest niemożliwa do wybrania:
źródło
Dla tych, którzy szukają rozwiązania dla Angular 2+ .
Możesz użyć danych
mousedown
wyjściowych komórki tabeli.I zapobiec, jeśli
detail > 1
.Dane
dblclick
wyjściowe nadal działają zgodnie z oczekiwaniami.źródło
lub na mozilli:
W IE
źródło
document.body
.Stary wątek, ale wymyśliłem rozwiązanie, które moim zdaniem jest czystsze, ponieważ nie wyłącza wszystkich równych wiązań z obiektem, a jedynie zapobiega losowym i niechcianym zaznaczeniom tekstu na stronie. To jest proste i działa dobrze dla mnie. Oto przykład; Chcę zapobiec zaznaczaniu tekstu, gdy kliknę kilka razy na obiekcie klasą „strzałka w prawo”:
HTH!
źródło
Jeśli próbujesz całkowicie zapobiec zaznaczaniu tekstu dowolną metodą, a także tylko podwójnym kliknięciem, możesz użyć
user-select: none
atrybutu css. Testowałem w Chrome 68, ale zgodnie z https://caniuse.com/#search=user-select powinien on działać w innych przeglądarkach zwykłych użytkowników.Zachowawczo, w Chrome 68 jest dziedziczony przez elementy potomne i nie pozwalał na zaznaczenie tekstu zawierającego element, nawet jeśli zaznaczono tekst otaczający i obejmujący element.
źródło
Aby zapobiec IE 8 CTRL i SHIFT, kliknij zaznaczanie tekstu na poszczególnych elementach
Aby zapobiec zaznaczaniu tekstu w dokumencie
źródło
Miałem ten sam problem. Rozwiązałem go, przełączając się na
<a>
i dodająconclick="return false;"
(aby kliknięcie go nie dodawało nowego wpisu do historii przeglądarki).źródło