Saya menangani acara dblclick pada rentang waktu di aplikasi web saya. Efek sampingnya adalah klik dua kali memilih teks pada halaman. Bagaimana saya bisa mencegah pemilihan ini terjadi?
javascript
selection-object
David
sumber
sumber
-ms-user-select: none;
lihat blogs.msdn.com/b/ie/archive/2012/01/11/... @PaoloBergantinoDalam javascript biasa:
Atau dengan jQuery:
sumber
return false
digunakanevent.preventDefault()
yang tidak membunuh penangan lain yang mungkin Anda miliki di mousedown.element
merupakan textarea, ya.Untuk mencegah pemilihan teks HANYA setelah klik dua kali:
Anda bisa menggunakan
MouseEvent#detail
properti. Untuk acara mousedown atau mouseup, ini adalah 1 ditambah jumlah klik saat ini.Lihat https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/detail
sumber
(event.detail === 2)
untuk benar-benar mencegah HANYA klik dua kali (dan bukan klik tiga kali dll.)FWIW, saya setel
user-select: none
ke elemen induk dari elemen anak-anak yang saya tidak ingin entah bagaimana dipilih ketika mengklik dua kali di mana saja pada elemen induk. Dan itu berhasil! Yang keren adalahcontenteditable="true"
, pemilihan teks dan lain-lain masih bekerja pada elemen anak!Jadi seperti:
sumber
style="user-select: note"
mana-mana mengurutkan masalah yang saya coba selesaikan :)Fungsi Javascript sederhana yang membuat konten di dalam elemen-halaman tidak dapat dipilih:
sumber
Bagi mereka yang mencari solusi untuk Angular 2+ .
Anda bisa menggunakan
mousedown
output dari sel tabel.Dan mencegah jika
detail > 1
.The
dblclick
output terus bekerja seperti yang diharapkan.sumber
atau, di mozilla:
Di IE,
sumber
document.body
.Utas lama, tetapi saya menemukan solusi yang saya yakini lebih bersih karena tidak menonaktifkan setiap genap yang terikat pada objek, dan hanya mencegah pemilihan teks acak dan tidak diinginkan pada halaman. Sangat mudah, dan bekerja dengan baik untuk saya. Berikut ini sebuah contoh; Saya ingin mencegah pemilihan teks ketika saya mengklik beberapa kali pada objek dengan kelas "panah-kanan":
HTH!
sumber
Jika Anda mencoba untuk sepenuhnya mencegah pemilihan teks dengan metode apa pun serta hanya dengan klik ganda, Anda dapat menggunakan
user-select: none
atribut css. Saya telah menguji di Chrome 68, tetapi menurut https://caniuse.com/#search=user-select itu seharusnya berfungsi di browser pengguna normal lainnya saat ini.Secara kebiasaan, di Chrome 68 itu diwarisi oleh elemen anak, dan tidak mengizinkan pemilihan teks yang berisi elemen bahkan ketika teks di sekitar dan termasuk elemen dipilih.
sumber
Untuk mencegah IE 8 CTRL dan SHIFT klik pemilihan teks pada elemen individual
Untuk mencegah pemilihan teks pada dokumen
sumber
Saya memiliki masalah yang sama. Saya menyelesaikannya dengan beralih ke
<a>
dan menambahkanonclick="return false;"
(sehingga mengkliknya tidak akan menambah entri baru ke riwayat browser).sumber