Apakah ada cara untuk mencegah pengguna melihat hantu gambar yang mereka coba seret (tidak khawatir tentang keamanan gambar, tetapi pengalaman).
Saya sudah mencoba ini yang memperbaiki masalah dengan pemilihan biru pada teks dan gambar tetapi tidak pada gambar hantu:
img {
-webkit-user-select: none;
-khtml-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
(Saya juga mencoba bersarang gambar di dalam div dengan aturan yang sama diterapkan pada div). Terima kasih
javascript
html
css
pengguna885355
sumber
sumber
Jawaban:
Anda dapat mengatur
draggable
atribut kefalse
dalam markup atau kode JavaScript.sumber
<img id="myImage" src="http://placehold.it/150x150" draggable="false">
-moz-user-select: none
. Kemungkinan solusi: Tambahpointer-events: none
.draggable
untukfalse
sepenuhnya menonaktifkan drag & drop.Saya pikir Anda dapat mengubah
menjadi a
sumber
Cobalah:
dan coba hindari
sumber
Anda dapat menggunakan properti CSS untuk menonaktifkan gambar di browser webkit.
sumber
-ms-user-drag
,-moz-user-drag
, danuser-drag
. Solusi khusus CSS yang bagus!Ini akan menonaktifkan seret untuk gambar di semua browser , sambil mempertahankan acara lain seperti klik dan arahkan. Bekerja selama ada HTML5, JS, atau CSS.
<img draggable="false" onmousedown="return false" style="user-drag: none" />
Jika Anda yakin pengguna akan memiliki JS, Anda hanya perlu menggunakan atribut JS, dll. Untuk lebih fleksibel, lihat ondragstart, onselectstart, dan beberapa WebKit tap / touch CSS.
sumber
onmousedown="return false"
cukup. Hal ini juga diperlukan untuk menghindari pengguna memilih gambar sambil menyeretnya, yang kemudian akan memungkinkan mereka untuk menyeret pilihan.Tangani
dragstart
acara danreturn false
.sumber
Anda dapat menetapkan gambar hantu alternatif jika Anda benar-benar perlu menggunakan acara seret dan tidak dapat mengatur draggable = false. Jadi cukup berikan png kosong seperti ini:
sumber
setDragImage
, bahkan jika mereka mendukung drag & drop misalnya IE10 / 11.dragIcon.src = 'data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7';
Tempatkan gambar sebagai latar belakang div kosong, atau di bawah elemen transparan. Ketika pengguna mengklik pada gambar untuk menarik, mereka mengklik div.
Lihat http://www.flickr.com/photos/thefella/5878724253/?f=hp
sumber
Untuk Firefox Anda harus sedikit lebih dalam dengan ini:
Nikmati.
sumber
Saya menemukan bahwa untuk IE, Anda harus menambahkan atribut draggable = "false" ke gambar dan jangkar untuk mencegah menyeret. opsi CSS berfungsi untuk semua browser lain. Saya melakukan ini di jQuery:
sumber
Ada solusi yang jauh lebih mudah di sini daripada menambahkan pendengar acara kosong. Cukup atur
pointer-events: none
ke gambar Anda. Jika Anda masih membutuhkannya untuk diklik, tambahkan wadah di sekitarnya yang memicu acara.sumber
sumber
Diuji pada Firefox: menghapus dan mengembalikan gambar berhasil! Dan itu transparan di eksekusi juga. Misalnya,
EDIT : Ini hanya berfungsi pada IE dan Firefox, anehnya. Saya juga menambahkan
draggable = false
pada setiap gambar. Masih hantu dengan Chrome dan Safari.EDIT 2 : Solusi gambar latar belakang adalah yang terbaik. Satu-satunya kehalusan adalah bahwa
background-size
properti harus didefinisikan ulang setiap kali gambar latar belakang diubah! Atau begitulah, sepertinya dari sisi saya. Lebih baik lagi, saya punya masalah denganimg
tag normal di bawah IE, di mana IE gagal untuk mengubah ukuran gambar. Sekarang, gambar memiliki dimensi yang benar. Sederhana:Juga, mungkin pertimbangkan itu:
sumber
Anda dapat mengatur gambar yang ditampilkan saat suatu item diseret. Diuji dengan Chrome.
setDragImage
menggunakan
Atau, seperti yang sudah disebutkan dalam jawaban, Anda dapat mengatur
draggable="false"
pada elemen HTML, jika tidak dapat menyeret elemen sama sekali tidak ada masalah.sumber
Be-all-end-all, tanpa memilih atau menyeret, dengan semua awalan peramban:
Anda juga dapat mengatur
draggable
atributfalse
. Anda dapat melakukannya dengan HTML sebaris:,draggable="false"
dengan Javascript:,elm.draggable = false
atau dengan jQuery:elm.attr('draggable', false)
.Anda juga dapat menangani
onmousedown
fungsinyareturn false
. Anda dapat melakukannya dengan HTML sebaris:,onmousedown="return false"
dengan Javascript:,elm.onmousedown=()=>return false;
atau dengan jQuery:elm.mousedown(()=>return false)
sumber
Ini berfungsi untuk saya, saya menggunakan beberapa skrip lightbox
sumber