Javascript字符码是否与所有或某些浏览器兼容
Are Javascript char codes compatible with all or certain browsers?
我在互联网上发现了以下代码,当我看到这个解决方案时,我想知道这个关键代码是否适用于所有浏览器。
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回答
charCode
和keyCode
之间的一个主要区别是,当引用
有趣的是,onkeypress似乎返回字符代码而不是keyCode
,而onkeyup和onkeydown按预期工作,因此在检测keyCode
值时可能存在一些问题。您可以在这里进行测试JavaScript -检测击键-附加参考:keyCode和charCode.
keyCode
, charCode
和which
不被w3c推荐,但是,仍然有对keyCode
模型的传统支持。坚实的跨浏览器/平台支持是通过固定的虚拟keyCodes完成的,这些keyCodes独立于键盘布局-因此是"虚拟的"。
在固定的虚拟键码之外的其他虚拟键码似乎也在不同的供应商之间一致地实现:KeyboardEvent -文档对象模型(DOM) | MDN虚拟键码(Windows)
jQuery使用它自己的keyCode
/charCode
事件对象属性:.which
,它试图统一keyCode
和charCode
。并支持keyCode
值-事件。& # 8211;jQuery API
简而言之,您的特定keyCode
: "13",应该与大多数支持javascript的浏览器一起工作,因为它是一个固定的虚拟键码,并且与所有浏览器和平台
键代码是标准的,但最好也检查键代码10
。10
为"换行"键码,13
为"回车"键码。这两者之间存在历史差异(打字机需要发送两种信号,"换行"将纸张向上移动,"回车"将打印部分移动到纸张的左侧)。
例如,快速检查显示Ctrl + 输入在Windows上的Chrome上发送keyCode 10
。有可能一些nix系统使用keyCode 10
,尽管我无法确认。谷歌搜索显示,iPhone可能会发送10个。可能还有其他的情况。
有些系统使用其中一个,有些系统使用另一个来表示换行符(上次我检查过,Windows使用两者的组合),但在现代世界中,它们实际上都表示输入,因此覆盖两个基础不会有什么伤害。
当然。整台电脑都是一样的
keyCode 13(换行符)在跨操作系统或跨浏览器兼容性方面没有问题。不用担心。
- 不同浏览器中的空白字符正则表达式行为
- 浏览器抛出错误:解析文件时出现意外字符 ' ' (1:0):图像.png
- 在某些浏览器中,jquery.html()正在取消转义html字符
- encodeURIComponent() 与浏览器和 [ä ö å] 字符的区别
- Twitter Bootstrap 2.3 Typeahead 搜索元素名称与字符和在谷歌浏览器中
- 可能使浏览器不删除 字符
- JavaScript-如何在Firefox浏览器中启用箭头键,同时根据特殊字符验证输入字段
- 浏览器从url中删除编码的点字符
- 是否可以使用浏览器中的字符键生成右键单击事件以访问上下文菜单
- 跨浏览器-文本区域中的换行字符
- 如何检测浏览器's表示“;新行“;有两个字符
- 当使用unicode/utf8/win1251字符时,在浏览器地址栏中的链接
- 设置document.location时,浏览器会转义一些url无效字符,但不会转义其他字符
- 在浏览器打开PHP页面时字符消失
- 如何在firefox浏览器中获取特殊字符的关键字码
- IE浏览器cookie中的特殊字符
- 如何在javascript中使用UTF-8字符设置Safari浏览器标题
- 浏览器如何定义源HTML中的哪些字符,在呈现的HTML中折叠为单个空白?那么s正则表达式呢?
- 为什么字符是'undefined'在Internet explorer中,但在其他浏览器中无效
- 跨浏览器跨操作系统的方式获得keyCode/字符按下keydown事件