JS入门

跨浏览器获取字符编码charCode

字号+ 作者: 来源: 2014-11-16 22:15 我要评论( )

Firefox、Chrome和Safari的event对象都支持一个charCode属性,这个属性只有在反生keypress事件时才包含值,而且这个值是按下的那个键所代表字符的ASCII编码。此时的keyCode通常等于0或者也可能等于所按键的键码。IE和Opera则是在keyCode中保存字符的ASCII编码。要想跨浏览器的方式取得字符编码,必须首先检测charCode属性是否可用,如果不可用则使用keyCode,如下面的例子所示:

var EventUtil = {
 getEvent: function (event) {
 return event ? event : window.event;
 },
 addHandler: function (element, type, handler) {
 if (element.addEventListener) {
 element.addEventListener(type, handler, false);
 } else if (element.attachEvent) {
 element.attachEvent("on" + type, handler);
 } else {
 element["on" + type] = handler;
 }
 },
 getCharCode: function (event) {
 if (typeof event.charCode == "number") {
 return event.charCode;
 } else {
 return event.keyCode;
 }
 }
};
var textbox = document.getElementById("myText");
EventUtil.addHandler(textbox, "keypress", function (event) {
 event = EventUtil.getEvent(event);
 alert(EventUtil.getCharCode(event));
});

这个方法首先检测charCode属性是否包含数值(在不支持这个属性的浏览器中,值为undefined),如果是,则返回该值。否则,就返回keyCode属性值。

在取得了字符编码之后,就可以使用String.fromCharCode()将其转换成实际的字符。

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • 使用javascript生成的植物显示过程特效

    使用javascript生成的植物显示过程特效

    2015-06-06 16:26

  • javascript 杂谈之哪种写法你更喜欢?

    javascript 杂谈之哪种写法你更喜欢?

    2014-11-16 22:15

  • 面向对象的JavaScript

    面向对象的JavaScript

    2014-11-16 22:15

  • Javascript模板引擎性能对比及几点优化

    Javascript模板引擎性能对比及几点优化

    2014-11-16 22:15

网友点评