Saya memiliki menu navigasi drop-down di mana beberapa judul tidak boleh menavigasi ke halaman lain ketika diklik (judul ini membuka menu drop-down saat diklik) sementara yang lain harus menavigasi (ini tidak memiliki dropdown dan navigasi langsung). Namun, keduanya jenis telah href
ditentukan untuk mereka
Untuk mengatasi ini saya menambahkan css berikut untuk jenis judul sebelumnya
pointer-events: none;
dan itu berfungsi dengan baik. Tapi karena properti ini tidak didukung oleh IE, saya mencari beberapa solusi. Yang mengganggu adalah saya tidak memiliki akses dan hak istimewa untuk mengubah kode HTML dan JavaScript sepenuhnya.
Ada ide?
pointer-events
sekarang di IE11 +Jawaban:
Pointer-events adalah hack Mozilla dan telah diterapkan di browser Webkit, Anda tidak dapat berharap melihatnya di browser IE selama jutaan tahun.
Namun ada solusi yang saya temukan:
Meneruskan Acara Mouse Melalui Lapisan
Ini menggunakan plugin yang menggunakan beberapa properti Javascript yang tidak dikenal / dipahami untuk mengambil acara mouse dan mengirimkannya ke elemen lain.
Ada juga solusi Javascript lain di sini .
Pembaruan untuk Oktober 2013 : rupanya datang ke IE di v11. Sumber . Terima kasih Tim.
sumber
"you can't expect to see it in IE browsers for another million years."
Mengambil hanya 3 tahun ...Berikut ini adalah solusi lain yang sangat mudah diterapkan dengan 5 baris kode:
Contoh:
sumber
Ada solusi untuk IE - gunakan inline SVG dan set pointer-events = "none" di SVG. Lihat jawaban saya di Cara membuat Internet Explorer mengemulasi pointer-events: tidak ada?
sumber
Perlu disebutkan bahwa khusus untuk IE,
disabled=disabled
berfungsi untuk tag anchor:IE memperlakukan ini sebagai
disabled
elemen dan tidak memicu acara klik. Namun,disabled
bukan atribut yang valid pada tag jangkar. Karenanya ini tidak akan berfungsi di browser lain. Bagi merekapointer-events:none
diperlukan dalam styling.UPDATE 1 : Jadi menambahkan aturan berikut terasa seperti solusi lintas-browser bagi saya
UPDATE 2 : Untuk kompatibilitas lebih lanjut, karena IE tidak akan membentuk style untuk anchor tag
disabled='disabled'
, jadi mereka akan tetap terlihat aktif. Jadi,a:hover{}
aturan dan gaya adalah ide yang bagus:Bekerja pada Chrome, IE11, dan IE8.
Tentu saja, CSS di atas mengasumsikan tag anchor diberikan
disabled="disabled"
sumber
Berikut ini adalah skrip kecil yang mengimplementasikan fitur ini (terinspirasi oleh artikel blog Shea Frederick yang disebutkan Kyle):
sumber
Tutupi elemen yang menyinggung dengan blok tak terlihat, menggunakan elemen pseudo:
:before
atau:after
Dengan demikian Anda klik mendarat pada elemen induk. Tidak bagus, jika induknya dapat diklik, tetapi berfungsi dengan baik sebaliknya.
sumber
Saya menghabiskan hampir dua hari untuk menemukan solusi untuk masalah ini dan akhirnya saya menemukan ini.
Ini menggunakan javascript dan jquery.
(GitHub) pointer_events_polyfill
Ini bisa menggunakan plug-in javascript untuk diunduh / disalin. Cukup salin / unduh kode dari situs itu dan simpan sebagai
pointer_events_polyfill.js
. Sertakan javascript itu ke situs Anda.<script src="JS/pointer_events_polyfill.js></script>
Tambahkan skrip jquery ini ke situs Anda
Dan jangan lupa untuk memasukkan plug-in jquery Anda.
Berhasil! Saya bisa mengklik elemen di bawah elemen transparan. Saya menggunakan IE 10. Saya harap ini juga bisa berfungsi di IE 9 dan di bawah.
EDIT: Menggunakan solusi ini tidak berfungsi ketika Anda mengklik kotak teks di bawah elemen transparan. Untuk mengatasi masalah ini, saya menggunakan fokus ketika pengguna mengklik pada kotak teks.
Javascript:
JQuery:
Ini memungkinkan Anda mengetik teks ke dalam kotak teks.
sumber
Saya telah menemukan solusi lain untuk menyelesaikan masalah ini. Saya menggunakan jQuery untuk mengatur
href
-atribut kejavascript:;
(bukan '', atau browser akan memuat ulang halaman) jika lebar jendela browser lebih besar dari 1'000px. Anda perlu menambahkan ID ke tautan Anda. Inilah yang saya lakukan:Mungkin ini berguna untukmu.
sumber
Menggunakan
OnClientClick = "return false;"
sumber
Anda juga bisa "tidak" menambahkan url di dalam
<a>
tag, saya melakukan ini untuk menu yang<a>
digerakkan oleh tag dengan drop down juga. Jika tidak ada drop down maka saya tambahkan url tetapi jika ada drop down dengan<ul> <li>
daftar saya hanya menghapusnya.sumber
Saya menghadapi masalah serupa:
Saya menghadapi masalah ini dalam arahan, saya memperbaikinya menambahkan sebagai elemen induknya dan membuat pointer-events: tidak ada untuk itu
Perbaikan di atas tidak berfungsi untuk tag pilih, lalu saya menambahkan kursor: teks (yang saya inginkan) dan itu berhasil untuk saya
Jika diperlukan kursor normal, Anda dapat menambahkan kursor: default
sumber
Solusi terbaik:
Berjalan dengan sempurna di semua browser
sumber