2011-08-30 31 views
0

我正在運行的功能上使用keyUp「未定義」:event.keyCode和則charCode在Safari上給出了德國的特殊標誌

function onKeyUpHandler(e) { 
if(!e) var e = window.event; 
var code; 
if (e.keyCode) code = e.keyCode; 
    else if (e.which) code = e.which; 
    else if (e.charCode) code = e.charCode; 
if (code < 37 || code > 40) { // not arrows 
    //do Stuff; 
} 

它工作正常,在大多數瀏覽器中的所有字符,但Safari瀏覽器(特別是具有在iPad上)爲德國ä,ü,ß等特殊字符提供代碼爲「未定義」(所以它不「做東西」),所以我不能檢查它是否是箭頭。我不知道是否應該添加「或(typeof(code)=='undefined')」。你能幫我決定我該怎麼辦?

回答

3

keyCode是您在keyup和​​事件中唯一需要的財產。它適用於所有主流瀏覽器,包括Safari。這是您的功能的更好的版本。我不確定是否還有其他問題;讓我知道如果有。

function onKeyUpHandler(e) { 
    e = e || window.event; 
    var code = e.keyCode; 
    if (code < 37 || code > 40) { // not arrows 
     //do Stuff; 
    } 
} 

以下是我認爲對JavaScript的關鍵事件的最終頁:http://unixpapa.com/js/key.html

+0

哇。我並不真正知道如何,因爲它看起來只是簡化的代碼,但它幫助它,並且它現在可以工作!謝謝! – Szamanm