2009-03-04 8 views

cevap

5

Bunu yapmaya çalıştığımda ilk defa, String'in charCodeAt yöntemini kullandım. Örneğin, "bir" anahtar basın algılamak istiyorsa: Ben büyük harf "A" yerine "a" kullanılan

if ("A".charCodeAt(0) == event.keyCode) { 
    /* Do stuff here. */ 
} 

Bildirimi. Bunun nedeni, event.keyCode'un yalnızca büyük harfin Unicode değeri olarak bildirilmesidir (eğer bir alfa anahtarı ise). Bu sorunu biraz kıllı yapan şey, basılan anahtarın Unicode değerini elde etmenin birkaç yolu olmasıdır. Firefox'ta sahip:

  • event.keyCode
  • event.charCode
  • event.which

Mozilla geliştirici belgelerine göre, anahtarın Unicode değeri saklanır ya event.keyCode veya event.charCode, ancak ikisi de değil. Hangisinin kodu olduğu dikkate alınmaksızın, event.which da saklanacaktır. Bununla birlikte, eğer değer charCode'da saklanırsa, büyük/küçük harfe duyarlı olacaktır. Dolayısıyla, etkinliklerinizi nereden aldığınıza bağlı olarak, hem "a" hem de "A" ya karşı kontrol etmeniz gerekebilir. Yalnızca "onkeydown" etkinliğinden önemli olayınızı alma lüksüne sahipseniz ve Firefox'u hedefliyorsanız, event.keyCode'da büyük/küçük harf duyarlı (büyük harf) kodlarını almayı deneyebilirsiniz. Aslında, bunu Windows XP'de Firefox 3.0.3, MacOS 10.4'te Firefox 3.0.4, MacOS 10.4 üzerinde Safari 3.2.1 ve MacOS 10.4'teki OmniWeb 5.8'de test ettim ve hepsi aynı şekilde çalışıyor. Ancak, bunu IE sürümlerinden herhangi birinde veya Opera, vb. Üzerinde denemedim. Bunu sıfırdan kendi başınıza geliştirmek istiyorsanız. Erişim sağladığınız kadar farklı işletim sistemlerinde bulabileceğiniz ve her tarayıcının anahtar kodları nasıl raporladığını öğrenmek için biraz deneme yapabildiğiniz kadar çok farklı tarayıcı almanızı öneririm. Ancak, birileri bu işi zaten yapmış. Örneğiniz olarak bağladığınız soruya one of the answers numaralı telefondan da değinildi! js-hotkeys adında jQuery için bir eklentidir. Bir tuş veya tuş kombinasyonuna basıldığında çalıştırılacak geri arama fonksiyonlarını kaydetmenize izin verir. Ben projenin sitesinden kopyaladığınız bir örnek kullanımı:

$(document).bind('keydown', 'Ctrl+a', fn); 

Farklı tarayıcılar/platformlarda çeşitli üzerinde çalışmak için test edilmiştir, bu nedenle jQuery kullanıyorsanız, bu yöntemi muhtemelen. Eğer jQuery'yi bir nedenden dolayı kullanmak istemiyorsanız, şansınız kalmaz. Görünüşe göre, bunun yerine kullanabileceğiniz another script dayanıyordu. Bu kütüphanelerden herhangi birini henüz kullanmamıştım, bu yüzden kullanım kolaylıklarını veya etkinliklerini kefil edemem. Eğer senin problemin olsaydı, onu çözmek istediğim yön budur dedi.

+0

Bunun için teşekkürler - ve çok geç kabul ettiğim için özür dilerim. Bir şekilde cevabını tamamen kaçırdım. – Ken

+0

Sorun değil. İtibarda biraz gecikmiş yumru her zaman hoş bir sürpriz. –

İlgili konular