我在网上找到了下面的代码,当我看到这个解决方案时,我想知道这个关键代码是否对所有浏览器都是一样的。
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
charCode
和keyCode
之间的一个主要区别是 charCode is deprecated并且通常在某些浏览器中没有值(value) [除了 0] 被引用时
有趣的是,onkeypress 似乎返回了 character code instead of the keyCode
,而 onkeyup 和 onkeydown 按预期工作,因此在检测 keyCode
值时可能会出现一些问题。你可以在这里测试这个 JavaScript - Detecting keystrokes
- 附加引用:keyCode and charCode .
keyCode
、charCode
和哪个
是not recommended by w3c ,但是,仍然有对 keyCode
模型的遗留支持。 fixed virtual keyCodes 提供可靠的跨浏览器/平台支持保持独立于键盘布局 - 因此是“虚拟的”。
其他虚拟键码 - 在固定虚拟键码之外 - 似乎也在各 vendor 之间一致实现:KeyboardEvent - Document Object Model (DOM) | MDN Virtual-Key Codes (Windows)
jQuery使用它自己的keyCode
/charCode
事件对象属性:.which
,试图统一keyCode
和 charCode
。并支持 keyCode
值 - event.which – jQuery API
简而言之,您的特定 keyCode
:“13”应该适用于大多数支持 javascript 的浏览器,因为它是一个固定的虚拟键码,并且与所有浏览器和平台一致
关于javascript - Javascript 字符代码是否与所有或某些浏览器兼容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027132/