javascript - 组合 Keydown 功能不适用于 Mac 键盘

标签 javascript jquery macos keyboard-shortcuts

我正在尝试使用键盘快捷键在我的应用程序上显示搜索栏。

虽然键盘快捷键在使用 Windows 键盘时可以完美工作,但当我使用带有 Mac 键盘的 Mac 计算机时,代码会失败。

以下是我编写的函数 -

var osName = "Unknown OS";
if (navigator.appVersion.indexOf("Win") != -1) osName = "Windows";
if (navigator.appVersion.indexOf("Mac") != -1) osName = "MacOS";

function showSearchBarOnKeyPress() {
        $(document).keydown(function (e) {
            if ((e.ctrlKey && e.altKey && e.key === "z") || (osName === "MacOS" && e.keyCode === 90 && e.keyCode === 17 && e.keyCode === 91)) {
                searchBarIsShown();
            }
        });
    }

最初我没有“||” “If”语句中的条件。第一个条件在使用 Windows 键盘时有效。当我在 Mac 上检查时,它不起作用。所以我必须输入“||”健康)状况。

对于 MacOS 条件,最初我使用了键码 - 59,55 和 6,如本引用文献所示 - https://eastmanreference.com/complete-list-of-applescript-key-codes

在检查 Mac 计算机时,检测到的键码是 - 90,91 和 17,然后我将其替换。

但是还是不行。

有人可以提供他们对这个问题的见解/想法吗?

谢谢

最佳答案

试试这个: metaKey 是 mac 上的 cmd 键。 altKey 是 mac 上的选项键。

var osName = "Unknown OS";
if (navigator.appVersion.indexOf("Win") != -1) osName = "Windows";
if (navigator.appVersion.indexOf("Mac") != -1) osName = "MacOS";

function showSearchBarOnKeyPress() {
    $(document).keydown(function (e) {
    var modifier = (navigator.appVersion.indexOf("Mac") != -1) ? e.ctrlKey : e.metaKey;
        if (modifier && e.altKey && e.key === "z") {
            searchBarIsShown();
        }
    });
}

请注意,旧浏览器支持metaKey..

关于javascript - 组合 Keydown 功能不适用于 Mac 键盘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56490086/

相关文章:

javascript - React JS 追加

ios - SecPKCS12Import when p12 requires an empty passphrase

javascript - React - 如何防止子组件的点击事件

javascript - 使用 jquery 在后台添加事件

javascript - 使用 backbone.d.ts

c# - jQuery ajax调用未击中 Controller ,因为字符串数据参数较大

javascript - Instagram - 如何从特定用户检索具有特定主题标签的图像

javascript - 为什么我的 Jquery 事件不会在 focusout() 上触发?

java - 如何使用 Java 6 针对 Java 1.4 库构建 Java 项目?

python - 从 Linux centos 7.0 终端而不是从 python 控制台运行时的 os.makedirs 问题