2009-03-09 15 views
2

Opera/Mac, kullanıcı ⌘S düğmesine bastığında bir eylemi geçersiz kılmanıza izin vermez (varsayılan, elbette, sayfayı kaydettir). Eski yazımın işe yaramadığını öğrendim. Form içeriğini Ajax üzerinden sunucuya kaydeder.Opera/Mac: geçersiz kılma cmd + S olayı?

İşte bir onkey var * işleyicisi:

key = ev.keyCode 
if (!key) key = ev.charCode 

if (ev.type == 'keypress' && 115 == key && ev.ctrlKey) return false 
if (83 == key && ev.ctrlKey) { 
    if (ev.type != 'keypress') save_text() 
    return false 
} 

Opera/Mac ilk acayiplik o ⌘ tuşunun yerine gerçek Ctrl tuş üzerinde ctrlKey oluşturmasıdır. Yani Safari'de bu, standart^S eyleminin benimkiyle mükemmel bir şekilde değiştirilmesini sağlıyor. Fakat Opera'da, ctrlKey bunun için since olduğu için SS'yi tamamen yok sayar, ancak ⌘S ne yaparsanız yapın standart Kaydet iletişim kutusunu getirir.

⌘S düğmesine bastığımda ve keyCode 17 ile tuşlandığında ve ardından key tuşuna bastıktan sonra her ikisini de tuşladığımda, Opera'daki tüm * kilitleme olaylarını gerçekten izlemeye çalışıyordum. S.

düğmesine basıldıktan sonra hiç bir olay üretilmiyor. Herkesin Opera'yı ⌘S'yi geçersiz kılmamaya nasıl zorlayacağına dair bir fikri var mı?

cevap

2

Buna bir özellik derim. ,'un her şeyi ve her şeyi geçersiz kılmamasına izin vermemelidir. Daha sonra Linux'ta Ctrl-Q'nun nasıl geçersiz kılınacağını soracaksınız ...

1

Mac'ım elimde değil, fakat bir kilitleme olayından preventDefault() kullanmayı beklerim. Bunu durdurmak için muhtemelen bir tanesi, bir tanesi kovulursa).

Buraya giderseniz, "Varsayılanı engelle" kutusunu işaretleyin ve komutlar'a basın, bir kaydetme iletişim kutusu alır mısınız? Evet, ben yapıyorum.

http://cross-browser.com/x/examples/key_events.php

+0

Evet. (* gerekli - en az 15 karakter) –

+0

Gerçekten işe yaramıyor gibi görünüyor. Belki de https://bugs.opera.com/wizard/ adresinden bir rapor atınız. – hallvors