【问题标题】:safari browser keydown event not workingSafari浏览器keydown事件不起作用
【发布时间】:2018-03-23 05:48:23
【问题描述】:

我正在尝试捕获 command+r (safari)。下面的代码适用于 chrome、IE、Firefox

$(document.body).on("keydown", this, function (event) {
    if (event.ctrlKey && event.keyCode == 82) {
        alert('ctrl+r event fired.')
    }
    if (event.metaKey && event.keyCode == 82) {
        alert('command+r event fired.')
    }
});
在 Safari 浏览器上捕获此事件时需要帮助。

我想在用户点击 safari 浏览器上的 command+r 时向用户显示自定义消息。

【问题讨论】:

    标签: javascript jquery safari


    【解决方案1】:

    由于cmd-R 强制在 Safari 上重新加载页面,您无法抓住这个组合键。

    在事件被捕获之前停止 JavaScript 执行并重新加载页面。

    因此,您甚至无法使用 evt.preventDefault(); 覆盖浏览器默认行为,因为此代码永远不会被执行。


    由于cmd-R 对 Safari 用户普遍“重新加载页面”,因此用不同的行为覆盖该行为将是糟糕的用户体验(即使它是可能的)。

    我认为 Safari 开发人员有意避免 cmd-R 被 JavaScript 代码覆盖。如果您覆盖cmd-R(重新加载)、cmd-Q(退出)、cmd-W(关闭窗口)会怎样。从用户体验的角度来看,您会“破坏”应用程序。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-05-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-01
      • 2012-12-28
      • 1970-01-01
      相关资源
      最近更新 更多