首页 » JavaScript » 跨浏览器获取字符编码charCode

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

此文章发表在 JavaScript. 将 固定链接 加入收藏.