【问题标题】:Javascript modifier keys that works on both Mac/PC?适用于 Mac/PC 的 Javascript 修饰键?
【发布时间】:2019-10-17 02:33:10
【问题描述】:

我找到了一些关于此的主题,但没有完全回答我的问题。

我是 Mac 用户,对 PC 上的键盘命令的作用知之甚少,但我假设您在 Mac 上使用 CMD 键执行的大多数操作在 PC 上是相同的,但使用 CTRL 键?

在我的网络应用程序中,我想让用户使用键命令来执行保存、新建、显示/隐藏等操作。因为默认情况下浏览器使用 CMD+S 保存页面,CMD+N 打开新页面window 和 CMD+H 隐藏窗口我想替换它是不好的做法(如果可能的话)。而且由于这同样适用于 PC 上的 CTRL 键,我猜 SHIFT 和 ALT 是唯一剩下的选项,如果它在 Mac/PC 上的工作方式不同的话。

SHIFT 和 ALT 感觉不是很重要,但不幸的是,使用单个字母似乎太容易出错。

这在网络应用程序中通常如何解决?是否有一个列表,我可以在其中查看浏览器中要避免的标准命令以及哪些可以替换或不能替换?

如果我在 Mac 上使用 CTRL 作为修饰符,metaKey 是 PC 上的一个选项还是不被视为标准?

【问题讨论】:

    标签: javascript browser cross-browser


    【解决方案1】:

    有两种 javascript 库。浏览器相关的和服务器相关的(nodejs)。

    如果你尝试在浏览器中做某事,那么你可以做类似的事情

    $("input").keydown(function(){
        if (event.keyCode === 12) {
            $("input").css("background-color", "yellow");
        }
    });
    

    其中的键码,在这种情况下是“输入”键。 获取keycode:https://keycode.info/

    您希望修改操作系统行为的事件,出于安全原因,不允许从 Web 浏览器进行修改。

    如果您想忘记浏览器并尝试使用 node,这里有一个教程:

    https://thisdavej.com/making-interactive-node-js-console-apps-that-listen-for-keypress-events/

    【讨论】:

    • Entere.keyCode13,而不是 12。此外,e.whiche.keyCode 均已弃用。应该改用e.keye.code,这也使代码更容易理解,因为现在应该是e.key ==='Enter'。请记住,一些旧浏览器使用了一些非标准代码,所以左边通常是 'LeftArrow',右边是 'RightArrow',但在 IE 和 Legacy Edge 上,它们将是 'Left''Right'。另外,看看keyjs.dev。我将很快添加有关这些跨浏览器不兼容性的信息! ?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多