javascript 跨浏览器获取字符编码 学习charCode的用法

发布时间:2019-11-14编辑:脚本学堂
本文介绍下,javascript实现跨浏览器取得字符编码的例子,学习下charCode的用法。有需要的朋友参考下吧。

浏览器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()将其转换成实际的字符。