2017-10-21 27 views
0

J'ai actuellement une fonction configurée dans mon fichier global.js qui démarre un morceau et le met en pause si la touche 4 est enfoncée. Cependant, lorsque j'implémente cette fonction, mon routage cesse de fonctionner. Donc, dans mon fichier mainMenu.js lorsque vous appuyez sur la touche 1, il devrait vous amener à game.html mais rien ne se passe. Je ne suis pas sûr de ce qui cause cette interférence. Des idées quant à la façon dont je peux empêcher ce phénomèneFonction checkSound() et interférence express

global.js:

window.onload = function(){ 
} 

//music 
var audio = new Audio('/music/oregonMusic.mp3') 

function checkSound(){ 
    audio.play(); 

    document.onkeypress = function(e){ 
     if(audio.paused){ 
      audio.play(); 
     } 
     else if(!audio.paused && e.keyCode === 52){ 
      audio.pause(); 
     } 
    } 
} 
checkSound(); 

mainMenu.js:

window.onload = function(){ 
    //console.log('swing'); 
    checkSound(); 
} 

document.onkeypress = function(e){ 
    //console.log('key pressed: ' + e.keyCode) 

    if(e.keyCode === 49){ 
     window.location = 'game' 
    } 
    else if(e.keyCode === 51){ 
     window.location = "topTen" 
    } 
} 
+1

il ne peut y avoir un 'document.onkeypress = fn' ... utilisez 'document.addEventListener ('keypress', fn);' à la place –

+0

@JaromandaX pouvez-vous donnez-moi un exemple de comment j'écrirais cela s'il vous plaît? –

Répondre

0

utilisant

document.onkeypress = function(e) { ... }; // 1 
document.onkeypress = function(e) { ... }; // 2 

résultats uniquement en fonction // 2 être appelé au clavier

à la place, vous devez utiliser addEventListener

donc, global.js

document.addEventListener('keypress', function(e) { 
    if(audio.paused){ 
     audio.play(); 
    } 
    else if(!audio.paused && e.keyCode === 52){ 
     audio.pause(); 
    } 
}); 

et mainMenu.js

document.addEventListener('keypress', function(e) { 
    if(e.keyCode === 49){ 
     window.location = 'game' 
    } 
    else if(e.keyCode === 51){ 
     window.location = "topTen" 
    } 
}); 

maintenant les deux gestionnaires seront appelés

+0

donc je peux juste mettre mes instructions if dans la fonction de l'eventlistener correct? –

+0

le code dans le corps des fonctions de gestionnaire d'événements serait inchangé, –

+0

vient d'ajouter votre code pour démontrer –