刷新(F5)在jQuery的对话框不工作
-
18-09-2019 - |
题
我使用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”。
解决方案很容易,你只需要关注你的模态对话框的表单元素上。 在此链接更多解释:
不隶属于 StackOverflow