2009-07-26 67 views
1
<script> 
var personX = 18; 
var personY = 13; 

function processArrowKeys(E) { 
    if (E.keyCode == 37 || E.keyCode == 38 || E.keyCode == 39 || E.keyCode==40) { 
     E.preventDefault(); 
    } 

    if (E.keyCode == 37) { 
     if (currentterrain[personX - 1][personY] == 0 || currentterrain[personX - 1][personY] == 1 || currentterrain[personX - 1][personY] == 3) { 
      personX--; 
     } 
    } 
    if (E.keyCode == 39) { 
     if (currentterrain[personX + 1][personY] == 0 || currentterrain[personX + 1][personY] == 1 || currentterrain[personX + 1][personY] == 3) { 
      personX++; 
     } 
    } 
    if (E.keyCode == 38) { 
     for (i = 0; i < 3; i++) { 
      if (currentterrain[personX][personY - 1] == 0 || currentterrain[personX][personY - 1] == 1 || currentterrain[personX][personY - 1] == 3) { 
       personY--; 
      } 
     } 
    } 
} 
</script> 

<body onkeydown="processArrowKeys(event)"> 

IE調試器說它期望一個對象並在「handleArrowKeys(event)」上剎車。IE中的JavaScript keydown錯誤

這在FF和Chrome

我不知道爲什麼會失敗,但它確實。

回答

2

改變這一行固定它:

if(E.keyCode==37||E.keyCode==38||E.keyCode==39||E.keyCode==40){if(navigator.appName!="Microsoft Internet Explorer"){E.preventDefault();}} 

IE不能與preventDefault()

0

變化

<body onkeydown="handleArrowKeys(event)"> 

<body onkeydown="processArrowKeys(event)"> 

不知道它是如何工作在Firefox和Chrome,因爲沒有handleArrowKeys功能。

+3

的工作,將是一個錯字在問題... – 2009-07-26 23:57:52

1

嘗試以下操作:

/* ... */ 
function processArrowKeys(E) { 
    if (!E) E = window.event; 
/* ... */ 
1

這應該工作了:

onload = function() { 
    var body = document.body, 
    personX = 18, 
    personY = 13; 

    body.onkeydown = function(E) { 
    E = E || window.event; 

    if (E.keyCode == 37 || E.keyCode == 38 || E.keyCode == 39 || E.keyCode==40) { 
     if (E.preventDefault) { 
     E.preventDefault(); 
     } else { 
     E.returnValue = false; 
     } 
    } 

    if (E.keyCode == 37) { 
     if (currentterrain[personX - 1][personY] == 0 || currentterrain[personX - 1][personY] == 1 || currentterrain[personX - 1][personY] == 3) { 
     personX--; 
     } 
    } 
    if (E.keyCode == 39) { 
     if (currentterrain[personX + 1][personY] == 0 || currentterrain[personX + 1][personY] == 1 || currentterrain[personX + 1][personY] == 3) { 
     personX++; 
     } 
    } 
    if (E.keyCode == 38) { 
     for (i = 0; i < 3; i++) { 
     if (currentterrain[personX][personY - 1] == 0 || currentterrain[personX][personY - 1] == 1 || currentterrain[personX][personY - 1] == 3) { 
      personY--; 
     } 
     } 
    } 

    } 
} 
+0

我在哪裏把它放在代碼中? – 2009-07-27 00:03:05

+0

把它放在