2009-07-26 9 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)"> 

Le débogueur IE dit qu'il attend un objet et freine sur "handleArrowKeys (event)".Erreur de code JavaScript dans IE

Cela fonctionne dans FF et Chrome

Je ne sais pas pourquoi cela ne fonctionne pas, mais il le fait.

Répondre

2

changer cette ligne fixe il:

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

IE ne doit pas travailler avec preventDefault()

+1

C'est ce que j'ai essentiellement fait dans mon exemple de code retravaillé. IE prend en charge returnValue = false. –

0

changement

<body onkeydown="handleArrowKeys(event)"> 

Pour

<body onkeydown="processArrowKeys(event)"> 

Je ne sais pas comment cela fonctionne dans Firefox et Chrome car il n'y a pas de fonction de handleArrowKeys.

+3

que serait une faute de frappe dans la question ... –

1

les opérations suivantes:

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

Cela devrait fonctionner:

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

où est-ce que je mets ça dans le code? –

+0

Placez ceci à l'intérieur du