2

我发现当我按下 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 之外的所有浏览器中都能完美运行

4

1 回答 1

8

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

使用 asetTimeout以便在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();
    }
});

小提琴

于 2012-11-09T10:46:07.417 回答