JavaScript: fare düğmesini kapalı olup olmadığını Kontrol etmek?
Bir şekilde eğer bir fare düğmesini şu anda JavaScript içinde aşağı olup olmadığını tespit etmek için var mı?
"Olay, ama ihtiyacım olan bu değil." mousedown biliyorum Biraz zaman fare tuşuna basıldıktan SONRA, Eğer hala basılı ise tespit etmek mümkün olmak istiyorum.
Bu mümkün mü?
CEVAP
İlişkin' çözüm: eğer kullanıcı birden fazla düğme kasten veya yanlışlıkla tıklamaları eğer işe yaramazsa Pax Nasıl bildiğimi sormayın :-(.
Doğru kod bu şekilde olmalıdır:
var mouseDown = 0;
document.body.onmousedown = function() {
mouseDown;
}
document.body.onmouseup = function() {
--mouseDown;
}
Test: bunun gibi
if(mouseDown){
// crikey! isn't she a beauty?
}
Eğer düğmeye basıldığında ne olduğunu bilmek istiyorsanız, sayaçları bir dizi mouseDown ve onları ayrı düğmeler için ayrı ayrı sayım yapmak için hazır olun:
// let's pretend that a mouse doesn't have more than 9 buttons
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;
}
Şimdi düğmeleri tam olarak basıldığında ne olduğunu kontrol edebilirsiniz:
if(mouseDownCount){
// alright, let's lift the little bugger up!
for(var i = 0; i < mouseDown.length; i){
if(mouseDown[i]){
// we found it right there!
}
}
}
Şimdi yukarıdaki kod standart uyumlu sadece çalışacak bir uyarı tarayıcılar doğrudan düğme bir sayı 0 ile başlıyor. YANİ şu anda basılı düğme bit maskesi kullanır:
- "Hiçbir şey bastırdı . 0
- Sol için 1
- Sağ 2
- Orta için 4
- ve, örneğin, 5 yukarıda herhangi bir kombinasyonu orta sol
Kodunuzu buna göre ayarlayın! Bir egzersiz olarak bırakıyorum.
Ve unutmayın, YANİ küresel bir olay nesnesi olarak &üssün kullanır; "". olay
Diğer tarayıcıları "sadece fare düğmesini olaylar () özelliği, onmousedown, onmouseup, YANİ onmousemove. ile gönderir" butonuna gönderirken bu arada YANİ bir özelliği sizin durumunuzda yararlı vardır: Düğme durumu biliyor, ve evt kontrol etmek için ihtiyacınız olduğunda onmousemove dinlemeye başlayabilirsiniz.düğme olarak var-artık fare düğmesini basılı olduğunu biliyorum:
// for IE only!
document.body.onmousemove = function(){
if(event.button){
// aha! we caught a feisty little sheila!
}
};
Tabii eğer ölü ve hareketli oynarsa hiçbir şey alamazsın.
İlgili bağlantılar:
Güncelleme #1: Belge taşıdım neden bilmiyorum.kod vücut tarzı. Daha doğrudan belge için olay işleyicileri eklemek olacak.
Hangisi daha iyi bir değişken olup olm...
Eğer bir dize geçerli bir sayı olup ol...
Nasıl kullanarak/Catch olmadan bir diz...
Nasıl bir elementin JavaScript ile ger...
Nasıl iki dizide JavaScript ile eşit o...