SORU
26 Kasım 2008, ÇARŞAMBA


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
27 Kasım 2008, PERŞEMBE


İ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.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • El SalvaLobo

    El SalvaLobo

    10 Temmuz 2006
  • Marina and The Diamonds

    Marina and T

    8 Temmuz 2008
  • mist64

    mist64

    30 Mayıs 2006