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

标签 javascript jquery firefox

我发现当按下 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);
    }
});

Fiddle


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

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

Fiddle

关于javascript - 当我在按下 ESC 键时在 keyDown 事件处理程序中使用它时,location.reload 不会重新加载页面。仅在 FF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13306492/

相关文章:

Javascript 警报与单选表单按钮不匹配

php - Ajax 发表评论,如 StackOverflow

jquery - 响应式数据表 |根据屏幕大小更改标记

javascript - AngularJS - 为什么我无法通过 $http.get 获取 JSON?

html - 使文本适合 div 的宽度在 Firefox 中不起作用

javascript - iframe 中的响应式网站

javascript - jQuery - 调整大小后相等的 Div-Heights

javascript - 使用 Symfony/Twig 进行 jQuery 文件上传

javascript - 在javaScript中通过DOM获取tagNames而不依赖其他元素

css - Firefox 和 Internet Explorer 中的 CSS 动画问题