safari浏览器keydown事件无效

时间:2018-03-22 16:39:39

标签: javascript jquery safari

我想抓住命令+ 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浏览器上单击命令+ r时,我想向用户显示自定义消息。

1 个答案:

答案 0 :(得分:1)

cmd-R迫使页面重新加载 Safari 时,您需要抓住此组合键。

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

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

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

我认为避免cmd-R被JavaScript代码覆盖是Safari开发人员故意的。如果您覆盖cmd-R(重新加载),cmd-Q(退出),cmd-W(关闭窗口),该怎么办?从用户体验的角度来看,你会打破"打破"申请。