【问题标题】:Refresh (F5) not working in jQuery Dialog刷新(F5)在 jQuery 对话框中不起作用
【发布时间】:2011-01-01 17:28:07
【问题描述】:

我正在使用 jquery 对话框小部件来显示模式框。但是,当按下 F5 时,当模式打开时,不会发生刷新。有什么想法吗?

有趣的更新:

试试这个演示:http://jqueryui.com/demos/dialog/#modal-message 现在,当焦点在“确定”按钮上时,刷新 (F5) 起作用,但是当按钮没有焦点时,则没有。

更新 2

我们实际上可以在对话框中添加任何类型的控件,将高度和宽度设置为 0 css 并将焦点设置在它上面以使刷新工作。虽然这不是最好的解决方案。我仍在尝试让按键工作。

更新 3

以下似乎目前有效:

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

【问题讨论】:

  • 我在演示站点上看到了同样的问题:jqueryui.com/demos/dialog/#modal
  • 我不喜欢您的更新 3。这是一种解决方法,但不是很好。众所周知,非字母键的 JS 映射不适合跨浏览器,并且可能有人或浏览器将 F5 分配给其他东西。它对 UI 阻止的其他键也没有任何作用。我认为这是一个 jQueryUI 错误,应该这样报告。最好的解决办法是让 UI 停止捕捉这些键。
  • 我同意它不是最好的,但是在我们的案例中,我们仅将 IE 和 FF 用于我们公司的 Intranet。为此,它起作用了。

标签: jquery jquery-ui jquery-dialog


【解决方案1】:

这似乎是一个常见的问题,我还没有看到满意的答案。 Stack Overflow 上有一些类似的问题,我见过的最佳答案是自己捕获键并触发动作(这是为了触发按钮,所以 f5 刷新可能更难)我自己在我也在做一个项目。

我怀疑将 modal 设置为 false 可能会有所帮助,但我还没有尝试过。

编辑:

我在 ui.dialog.js 的第 539 行找到了这个:

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

从那里删除 keydown 和 keypress 似乎允许正常的浏览器键工作。现在我的看起来像这样:

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);
});

如果可能的话,最好在正式版​​中修复这个问题。

【讨论】:

  • 这只是模态演示的演示站点上的一个问题,尽管这并不是真正的解决方案。
  • 我正在尝试使用 dlg1.bind('keypress', function(e) { ... });然而,这似乎并没有做任何事情。有什么想法吗?
  • 我打算看一下代码,看看能否尽快找到解决方法,因为我们受到了同样的问题的影响。
  • 感谢大卫添加修复程序。
【解决方案2】:

对话框是否通过捕获按键事件并停止传播“F5”来禁用 F5 键?

检查此类按键捕获的代码。这可以解释很多!

【讨论】:

    【解决方案3】:

    我遇到了类似的问题,但发现我输入了“return false;”,这会阻止所有其他键的注册。例如,下面的“return false”将停止识别除 xxx 和 yyy 之外的所有其他键(如 F5)。

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

    所以只要把“return false”去掉就行了。

    【讨论】:

      【解决方案4】:

      解决方案很简单,您只需关注模态对话框的表单元素。 对此link 的更多解释:

      【讨论】:

        猜你喜欢
        • 2018-08-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-01
        相关资源
        最近更新 更多