2012-04-10 85 views
0

我有一些代碼在一個按鍵運行的函數:鍵輸入無法使用Chrome?

document.onkeypress=function(e) 
{ 
     var e=window.event || e 
     var evtobj=window.event? event : e //distinguish between IE's explicit event object (window.event) and Firefox's implicit. 
     var unicode=evtobj.charCode? evtobj.charCode : evtobj.keyCode 
    if (unicode == 39) 
    { 
     Rotate(); 
    } 
} 

    function Rotate() 
    { 
     myDiv.setAttribute('style', '-moz-transform:rotate(' + rotationAmount + 'deg); -o-transform:rotate(' + rotationAmount + 'deg);-webkit-transform:rotate(' + rotationAmount + 'deg);-ms-transform:rotate(' + rotationAmount + 'deg)'); 
    } 

而且無論出於何種原因,按鍵輸入工作在Firefox,而不是瀏覽器。當我在Chrome中按下某個鍵時,什麼也沒有發生。我知道Rotate()函數在Chrome中工作,因爲如果我在不同條件下調用它,它將毫無問題地運行。

+1

您的'evtobj'變量看起來很誇張。你可以參考你的'e'。 – alex 2012-04-10 23:02:17

回答

1

您似乎在檢測右箭頭鍵。對於這個和任何其他不可打印的按鍵,您應該使用​​事件,而只使用keyCode屬性,該屬性適用於所有主流瀏覽器。您還可以簡化您的事件代碼:

document.onkeydown = function(e) 
{ 
    e = e || window.event; 
    if (e.keyCode == 39) 
    { 
     Rotate(); 
    } 
}; 
+0

謝謝,這工作! – 2012-04-10 23:06:31