当按下ESC时,当我在keyDown事件处理程序中使用它时,location.reload不会重新加载页面。 只在FF

我发现当按下ESC按钮时,当我从keyDown事件处理程序调用它时,location.reload()调用没有做任何事情。 有没有人知道如何重新加载页面的一些解决方法? 另外我找到了http://bugs.jqueryui.com/ticket/4922 ,看起来这个问题已经解决了。 这是一个代码示例。 订阅活动:

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

而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; 

}

请注意,此代码适用于除FF以外的所有浏览器

这是因为Esc键在Firefox中触发后会立即停止刷新。

使用setTimeout以便在事件完成冒泡后执行location.reload()

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

小提琴


或者更好,只需调用event.preventDefault()以便Esc键不会取消页面重新加载:

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

小提琴