【问题标题】:JavaScript: How to clear my custom keyboard mappings and use the default onesJavaScript:如何清除我的自定义键盘映射并使用默认键盘映射
【发布时间】:2015-03-09 02:16:11
【问题描述】:

在我的 Web 应用程序中,我定义了自己的键盘事件处理程序并覆盖了一些默认键映射:

document.onkeydown = function(eventParam)
    {
        var keycode;
        keycode = eventParam.which;

        // detect ESC key
        if (keycode == 27)
        {
            //close the window
            LightboxFileInfo.close();
        }

        return true;
    };

但是,在我的 Web 应用程序的另一点,我想清除我的自定义键映射并再次使用默认键映射。这是我的问题。你能告诉我怎么做吗?如何清除我所有的键盘映射并再次使用默认的而不重新启动 Web 应用程序?

基本上,我的 Web 应用程序有许多窗口。窗户是灯箱。对于每个窗口/灯箱,我对相同的键使用不同的功能。请记住,我有一个 Web 应用程序,而不是一个网站。这意味着,一切都发生在一个网页/JavaScript 文档中,我通过已经提到的灯箱显示不同的窗口,而不是不同的 .html/.php 文件。

如果我需要在更改默认键盘映射之前保存它们,那很好。你能告诉我怎么做吗?我的 JavaScript 知识到此结束。当然,我在寻找最简单的解决方案。

我正在寻找解决方案:

  • JavaScript

我不使用 jQuery,只使用普通的 JavaScript。

除此之外,我还使用:

  • HTML 5
  • CSS 3
  • PHP 5.5.8
  • MySQL 5.6.15
  • Apache 2.4.7

提前谢谢你

【问题讨论】:

    标签: javascript php css html web-applications


    【解决方案1】:

    由于您没有使用eventParam.preventDefault(); 禁用默认行为,因此通常的默认设置也应该首先起作用。但是要禁止调用你自己的功能,你可以用空的覆盖处理函数

    document.onkeydown = function() { };
    

    【讨论】:

    • 嗨,非常感谢您的回答。换句话说,如果我定义我自己的处理函数并不意味着我正在禁用默认的处理函数。很好的答案,谢谢。 +1。当我定义了eventParam.preventDefault(); 时,请您有什么建议。我在代码的某些地方定义了这个函数。我还不知道它们是否也会影响键盘映射。
    • 让我们澄清一下默认的含义:例如,如果您有表单并点击Enter,则默认行为是提交表单。如果您绑定自己的按键处理程序并调用e.preventDefault(),则不会提交表单。这种阻止当然可以按键代码来完成,例如,仅阻止退格的默认行为。但是,如果您像我在回答中建议的那样删除整个处理程序,那么将永远不会再次阻止默认设置,因此您可以再次使用默认行为,而不会阻止默认行为。
    • 完美而清晰的答案。非常感谢。我对此主题没有任何其他问题,因此我将此答案标记为已接受的答案。祝你今天过得愉快。 +1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-12
    • 1970-01-01
    • 1970-01-01
    • 2010-11-11
    • 2022-12-17
    相关资源
    最近更新 更多