我使用jquery的对话框窗口小部件显示一个模式框。但是按F5时,而模式是开放的无刷新发生。任何想法?

<强>有趣的更新:

尝试这个演示: http://jqueryui.com/demos/dialog/#modal-消息 现在,当焦点上的“OK”按钮,则刷新(F5)的作品,但是当按钮不具有焦点,那么它不会。

<强>更新2

我们实际上可以只添加任何一种控制的对话框中,设置宽度和高度为0 CSS和在其上设置焦点得到刷新工作。这是不是最好的解决办法,但。我仍然试图让按键的工作。

<强>更新3

下面似乎现在工作:

$(document).keydown(function(e)
{
    if (e.which == 116) // key code of the F5 button
    {
        document.location.reload();
     }
}); 
有帮助吗?

解决方案

这似乎是一个普遍的问题,我还没有看到一个满意的答复。有一个关于堆栈溢出几个类似的问题,我见过的最好的答案是捕获键和自己的触发动作(这是为进入触发按钮,这样F5刷新可能较难),我已经看到了自己在一个项目,我工作了。

我怀疑模式设置为false可以帮助,但我还没有尝试过呢。

编辑:

我发现这个上ui.dialog.js的539行:

events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),

卸下从那里KeyDown和按键似乎允许正常浏览器键工作。现在,我的是这样的:

events: $.map('focus,mousedown,mouseup,click'.split(','),

我不知道我会做这个已经删除了哪些功能。事件似乎要使用的唯一的地方是在线路549:

$(document).bind($.ui.dialog.overlay.events, function(event) {
    var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
    return (dialogZ > $.ui.dialog.overlay.maxZ);
});

这将是很好修复此问题在正式版中,如果可能的。

其他提示

是对话框通过捕获按键事件和停止其传播的“F5” diabling F5键?

检查代码对于这种按键捕捉。这可以解释很多!

我有类似的问题,但发现我已经把在“返回false;”,这是停止正在注册的所有其他键。例如,“返回false”下面将停止所有其他密钥(如F5)被识别除了xxx和YYY。

$(document).keydown(function(e){
if (e.keyCode == xxx) {/*do something*/}
if (e.keyCode == yyy) {/*do something*/}
return false;
});

所以才采取了 “返回false”。

解决方案很容易,你只需要关注你的模态对话框的表单元素上。 在此链接更多解释:

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top