Mengenai solusi Pax: tidak berfungsi jika pengguna mengklik lebih dari satu tombol secara sengaja atau tidak sengaja. Jangan tanya saya bagaimana saya tahu :-(.
Kode yang benar harus seperti itu:
var mouseDown = 0;
document.body.onmousedown = function() {
++mouseDown;
}
document.body.onmouseup = function() {
--mouseDown;
}
Dengan tes seperti ini:
if(mouseDown){
}
Jika Anda ingin mengetahui tombol apa yang ditekan, bersiaplah untuk membuat mouseDown sebagai array penghitung dan menghitungnya secara terpisah untuk tombol terpisah:
var mouseDown = [0, 0, 0, 0, 0, 0, 0, 0, 0],
mouseDownCount = 0;
document.body.onmousedown = function(evt) {
++mouseDown[evt.button];
++mouseDownCount;
}
document.body.onmouseup = function(evt) {
--mouseDown[evt.button];
--mouseDownCount;
}
Sekarang Anda dapat memeriksa tombol apa yang ditekan dengan tepat:
if(mouseDownCount){
for(var i = 0; i < mouseDown.length; ++i){
if(mouseDown[i]){
}
}
}
Sekarang diperingatkan bahwa kode di atas hanya akan berfungsi untuk browser yang memenuhi standar yang memberikan Anda nomor tombol mulai dari 0 dan lebih tinggi. IE menggunakan sedikit topeng dari tombol yang saat ini ditekan:
- 0 untuk "tidak ada yang ditekan"
- 1 untuk kiri
- 2 untuk kanan
- 4 untuk tengah
- dan kombinasi apapun di atas, misalnya 5 untuk kiri + tengah
Jadi sesuaikan kode Anda dengan benar! Saya tinggalkan sebagai latihan.
Dan ingat: IE menggunakan objek event global yang disebut… "event".
Secara kebetulan, IE memiliki fitur yang berguna dalam kasus Anda: ketika browser lain mengirim "tombol" hanya untuk aktivitas tombol mouse (onclick, onmousedown, dan onmouseup), IE juga mengirimkannya dengan onmousemove. Jadi, Anda dapat mulai mendengarkan onmousemove saat Anda perlu mengetahui status tombol, dan memeriksa tombol evt. segera setelah Anda mendapatkannya - sekarang Anda tahu tombol mouse apa yang ditekan:
document.body.onmousemove = function(){
if(event.button){
}
};
Tentu saja Anda tidak mendapatkan apa-apa jika dia berpura-pura mati dan tidak bergerak.
Tautan yang relevan:
Pembaruan # 1 : Saya tidak tahu mengapa saya membawa-bawa kode document.body-style. Akan lebih baik untuk melampirkan penangan kejadian langsung ke dokumen.