location.reload ne recharge pas la page lorsque je l’utilise dans le gestionnaire d’événements keyDown lorsque vous appuyez sur la touche ESC. Seulement en FF

Je découvre que l’appel location.reload () ne fait rien quand je l’ai appelé depuis le gestionnaire d’événements keyDown lorsque le bouton ESC est enfoncé. Est-ce que quelqu’un sait comment contourner le problème pour recharger la page? Aussi, je trouve http://bugs.jqueryui.com/ticket/4922 et il semble que ce problème est déjà résolu. Voici un exemple de code. inscription à l’événement:

jQuery(document).keydown(function (event) { if (event.keyCode == 27) { closeVideoPopup(); } }); 

Et la méthode closeVideoPopup ():

 function closeVideoPopup() { jQuery('#fade, .window_container').fadeOut(function(){ jQuery('#fade, a.close').remove(); }); jQuery('ul.tabs').css('z-index', '99'); jQuery('div.framing_slider').css('z-index', '9999'); location.reload(); return false; 

}

Veuillez noter que ce code fonctionne parfaitement dans tous les navigateurs, sauf FF .

En effet, la touche Échap arrête l’actualisation immédiatement après l’avoir activée dans Firefox.

Utilisez un setTimeout pour que location.reload() s’exécute après la fin de la diffusion de l’événement.

 jQuery(document).keydown(function (event) { if (event.keyCode == 27) { setTimeout(closeVideoPopup, 0); } }); 

Violon


Ou mieux, appelez event.preventDefault() pour que la touche Echap n’annule pas le rechargement de la page:

 jQuery(document).keydown(function (event) { if (event.keyCode == 27) { event.preventDefault(); closeVideoPopup(); } }); 

Violon