javascript - Javascript 字符代码是否与所有或某些浏览器兼容?

标签 javascript jquery

我在网上找到了下面的代码,当我看到这个解决方案时,我想知道这个关键代码是否对所有浏览器都是一样的。

var CalendarFilter = Backbone.View.extend({
      // ...
      events: {
        'click .filter':  'filter',
        'keypress input[type=text]': 'filterOnEnter'
      },
      filterOnEnter: function(e) {
        if (e.keyCode != 13) return;
        this.filter(e);
      },
      filter: function(e) { /* ... */ });
      }
    });

只是一个疑问,谢谢。

最佳答案

首先,charCode不是keyCode! charCode 遵循ascii 集,而keyCode 是key 的特定索引。两者之间的不同值可以在这里看到:Keyboard Event Character Values for the Lower ASCII Character Set - O'Reilly Answers

charCodekeyCode 之间的一个主要区别是 charCode is deprecated并且通常在某些浏览器中没有值(value) [除了 0] 被引用时

有趣的是,onkeypress 似乎返回了 character code instead of the keyCode ,而 onkeyup 和 onkeydown 按预期工作,因此在检测 keyCode 值时可能会出现一些问题。你可以在这里测试这个 JavaScript - Detecting keystrokes - 附加引用:keyCode and charCode .

keyCodecharCode哪个not recommended by w3c ,但是,仍然有对 keyCode 模型的遗留支持。 fixed virtual keyCodes 提供可靠的跨浏览器/平台支持保持独立于键盘布局 - 因此是“虚拟的”。

其他虚拟键码 - 在固定虚拟键码之外 - 似乎也在各 vendor 之间一致实现:KeyboardEvent - Document Object Model (DOM) | MDN Virtual-Key Codes (Windows)

jQuery使用它自己的keyCode/charCode事件对象属性:.which,试图统一keyCodecharCode。并支持 keyCode 值 - event.which – jQuery API

简而言之,您的特定 keyCode:“13”应该适用于大多数支持 javascript 的浏览器,因为它是一个固定的虚拟键码,并且与所有浏览器和平台一致

关于javascript - Javascript 字符代码是否与所有或某些浏览器兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027132/

相关文章:

javascript - 相对于线段平移坐标

Javascript 正则表达式空格检查

javascript - 在 GridView 中单击按钮时调用客户端事件

javascript - Angular 指令父范围

javascript - onclick 在 div 内滚动

Javascript 求和表条件

javascript - 如果网站已滚动,则显示 Logo

jquery - 索引页面不断加载联系表

javascript - 如何从哈希数据中删除 # 符号?查询?

javascript - 根据以像素为单位的偏移量在 DIV 中查找特定文本