Seperti yang telah disebutkan orang lain, tombol kanan mouse dapat dideteksi melalui peristiwa mouse biasa (mouseous, mouseup, klik) . Namun, jika Anda mencari acara pembakaran ketika menu klik kanan muncul, Anda mencari di tempat yang salah. Menu klik kanan / konteks juga dapat diakses melalui keyboard (shift + F10 atau tombol menu konteks pada Windows dan beberapa Linux). Dalam situasi ini, acara yang Anda cari adalah oncontextmenu
:
window.oncontextmenu = function ()
{
showCustomMenu();
return false; // cancel default menu
}
Sedangkan untuk acara mouse sendiri, browser menetapkan properti ke objek acara yang dapat diakses dari fungsi penanganan acara:
document.body.onclick = function (e) {
var isRightMB;
e = e || window.event;
if ("which" in e) // Gecko (Firefox), WebKit (Safari/Chrome) & Opera
isRightMB = e.which == 3;
else if ("button" in e) // IE, Opera
isRightMB = e.button == 2;
alert("Right mouse button " + (isRightMB ? "" : " was not") + "clicked!");
}
window.oncontextmenu - MDC
(isRightMB?"was not" : "")
seharusnya(isRightMB?"was" : "was not")
. Baik ? Tolong bantu untuk memeriksanya.onmousedown
danonmouseup
, tetapi tidakonclick
. Ternyata, di Chrome,onclick
hanya dipicu untuk tombol kiri-mouse. (dan ya teman-teman, saya menguji ini beberapa kali) Untuk mendeteksi klik kanan mouse, Anda harus menggabungkanonmousedown
danonmouseup
, atau menggunakanoncontextmenu
.lihat kode jQuery berikut:
Nilai
which
akan:sumber
.which
tidak sama dengan.button
? Oo.button
=> 0,1,2 ;which
=> 1,2,3 . itu salah.Anda dapat menggunakan acara tersebut
window.oncontextmenu
, misalnya:sumber
window.oncontextmenu = function () { e.preventDefault() }
tidak bekerjaYa, meskipun w3c mengatakan klik kanan dapat dideteksi oleh peristiwa klik, onClick tidak dipicu melalui klik kanan di browser biasa.
Bahkan, klik kanan hanya memicu onMouseDown onMouseUp dan onContextMenu.
Dengan demikian, Anda dapat menganggap "onContextMenu" sebagai acara klik kanan. Ini adalah standar HTML5.0.
sumber
Jika Anda ingin mendeteksi klik kanan mouse, Anda tidak boleh menggunakan
MouseEvent.which
properti karena tidak standar dan ada banyak ketidakcocokan di antara browser. (lihat MDN ) Anda sebaiknya menggunakanMouseEvent.button
. Ini mengembalikan angka yang mewakili tombol yang diberikan:0
: Tombol utama ditekan, biasanya tombol kiri atau keadaan tidak diinisialisasi1
: Tombol bantu ditekan, biasanya tombol roda atau tombol tengah (jika ada)2
: Tombol sekunder ditekan, biasanya tombol kanan3
: Tombol keempat, biasanya tombol Browser Back4
: Tombol kelima, biasanya tombol Browser ForwardMouseEvent.button
menangani lebih banyak tipe input daripada hanya mouse standar:Referensi:
sumber
Tidak, tetapi Anda dapat mendeteksi tombol mouse apa yang digunakan dalam acara "onmousedown" ... dan dari sana menentukan apakah itu "klik kanan".
sumber
onmousedown
,onmouseup
danonclick
. Namun, jika Anda ingin mengganti menu klik kanan, acara ini bukan yang seharusnya Anda gunakan (lihat jawaban saya di bawah).Kode berikut menggunakan jQuery untuk menghasilkan
rightclick
acara khusus berdasarkan defaultmousedown
danmouseup
acara. Itu mempertimbangkan hal-hal berikut:contextmenu
acara tidak dipicu di sana)on('contextmenu', ...)
tidaksumber
Ya itu!
sumber
elem.addEventListener("click", doSomething)
Ya, oncontextmenu mungkin merupakan alternatif terbaik tetapi perlu diketahui bahwa itu memicu pada mouse ke bawah sedangkan klik akan memicu pada mouse ke atas.
Pertanyaan terkait lainnya adalah tentang klik ganda kanan - yang tampaknya tidak didukung kecuali melalui pemeriksaan timer manual. Salah satu alasan Anda mungkin ingin memiliki klik ganda kanan adalah jika Anda perlu / ingin mendukung input mouse tangan kiri (pembalikan tombol). Implementasi browser tampaknya membuat banyak asumsi tentang bagaimana kita seharusnya menggunakan perangkat input yang tersedia.
sumber
Cara termudah untuk menyelesaikan klik kanan adalah menggunakan
Namun ini bukan solusi lintas browser, browser berperilaku berbeda untuk acara ini terutama firefox dan IE. Saya akan merekomendasikan di bawah ini untuk solusi lintas browser
sumber
Itu adalah cara termudah untuk mengaktifkannya, dan berfungsi di semua browser kecuali tampilan web aplikasi seperti (CefSharp Chromium dll ...). Saya harap kode saya akan membantu Anda dan semoga berhasil!
sumber
sumber
Jika Anda ingin memanggil fungsi sementara acara klik kanan berarti kita dapat menggunakan berikut ini
sumber
Ini berhasil dengan saya
sumber
Cobalah menggunakan
which
dan / ataubutton
propertiThe demo
Beberapa info di sini
sumber
Menangani acara menggunakan
jQuery
perpustakaansumber
Untuk menangani klik kanan dari mouse, Anda dapat menggunakan acara 'oncontextmenu'. Di bawah ini adalah contohnya:
kode di atas mengingatkan beberapa teks ketika klik kanan ditekan. Jika Anda tidak ingin menu default browser muncul, Anda dapat menambahkan return false; Di akhir konten fungsi. Terima kasih.
sumber
Ya, ini adalah javascript event mousedown. Ada juga plugin jQuery untuk melakukannya
sumber