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

Are Javascript char codes compatible with all or certain browsers?

本文关键字:浏览器 字符 是否 Javascript      更新时间:2023-09-26

我在互联网上发现了以下代码,当我看到这个解决方案时,我想知道这个关键代码是否适用于所有浏览器。

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是键的特定索引。两者之间的不同值可以在这里看到:低ASCII字符集的键盘事件字符值- O'Reilly回答

charCodekeyCode之间的一个主要区别是,当引用

时,charCode已被弃用,并且在某些浏览器中通常没有值[除了0]。

有趣的是,onkeypress似乎返回字符代码而不是keyCode,而onkeyup和onkeydown按预期工作,因此在检测keyCode值时可能存在一些问题。您可以在这里进行测试JavaScript -检测击键-附加参考:keyCode和charCode.

keyCode, charCodewhich不被w3c推荐,但是,仍然有对keyCode模型的传统支持。坚实的跨浏览器/平台支持是通过固定的虚拟keyCodes完成的,这些keyCodes独立于键盘布局-因此是"虚拟的"。

在固定的虚拟键码之外的其他虚拟键码似乎也在不同的供应商之间一致地实现:KeyboardEvent -文档对象模型(DOM) | MDN虚拟键码(Windows)

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

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

键代码是标准的,但最好也检查键代码1010为"换行"键码,13为"回车"键码。这两者之间存在历史差异(打字机需要发送两种信号,"换行"将纸张向上移动,"回车"将打印部分移动到纸张的左侧)。

例如,快速检查显示Ctrl + 输入在Windows上的Chrome上发送keyCode 10。有可能一些nix系统使用keyCode 10,尽管我无法确认。谷歌搜索显示,iPhone可能会发送10个。可能还有其他的情况。

有些系统使用其中一个,有些系统使用另一个来表示换行符(上次我检查过,Windows使用两者的组合),但在现代世界中,它们实际上都表示输入,因此覆盖两个基础不会有什么伤害。

当然。整台电脑都是一样的

keyCode 13(换行符)在跨操作系统或跨浏览器兼容性方面没有问题。不用担心。