如何在使用 Command+Z 时关闭 Safari 打开上一页?

1.2*_*tts 8 html javascript safari macos

我最近注意到在 Safari 中,在某些情况下,如果我按 Command+z,它将打开之前打开的浏览器选项卡。

它弄乱了我的网络应用程序。有时它会正确执行撤消,而有时它会打开上一页(当没有更多撤消历史记录时)。这是一个错误还是我可以在 JavaScript 或 HTML 中关闭该功能?我的应用程序并不总是将光标放在文本字段内,因此我需要阻止 Safari 获取该事件。

这是 Mac OSX 10.11、Safari 10.1。

Safari 从撤消键入更改为撤消关闭选项卡:

在此输入图像描述 在此输入图像描述

1.2*_*tts 0

我为按键事件的窗口对象添加了一个侦听器,并对该事件调用了 PreventDefault():

function preventDefaultWindowOpen(prevent) {
    var isSafari;
    var useCapture = true;
    const KEYTYPE = "keypress";

    if (navigator.vendor && navigator.vendor.indexOf('Apple') > -1 && 
        navigator.userAgent && !navigator.userAgent.match('CriOS')) {
        isSafari = true;
    }
    else {
        return true;
    }

    if (window.preventOpenOnUndoKey==null) {
        window.preventOpenOnUndoKey = function(event) {
            if (event.keyCode==122 && event.metaKey==true) {
                event.preventDefault();
            }
        }
    }

    if (prevent) {
        window.addEventListener(KEYTYPE, window.preventOpenOnUndoKey, useCapture);
    }
    else {
        window.removeEventListener(KEYTYPE, window.preventOpenOnUndoKey, useCapture);
    }

    return true;
}

preventDefaultWindowOpen(true);
Run Code Online (Sandbox Code Playgroud)