当前位置 : 主页 > 网络编程 > JavaScript >

键盘事件模拟

来源:互联网 收集:自由互联 发布时间:2021-06-28
键盘事件模拟 /** * 键盘事件模拟 * @param el 页面元素 * @param evtType 事件类型 keydown,keyup * @param keyCode 键码值 */function fireKeyEvent(el, evtType, keyCode){ var doc = el.ownerDocument, win = doc.defaultView |
键盘事件模拟
/**
 * 键盘事件模拟
 * @param el 页面元素
 * @param evtType  事件类型 keydown,keyup
 * @param keyCode 键码值
 */
function fireKeyEvent(el, evtType, keyCode){
    var doc = el.ownerDocument,
        win = doc.defaultView || doc.parentWindow,
        evtObj;
    if(doc.createEvent){
        if(win.KeyEvent) {
            evtObj = doc.createEvent('KeyEvents');
            evtObj.initKeyEvent( evtType, true, true, win, false, false, false, false, keyCode, 0 );
        } else {
            evtObj = doc.createEvent('UIEvents');
            Object.defineProperty(evtObj, 'keyCode', {
                get : function() { return this.keyCodeVal; }
            });
            Object.defineProperty(evtObj, 'which', {
                get : function() { return this.keyCodeVal; }
            });
            evtObj.initUIEvent( evtType, true, true, win, 1 );
            evtObj.keyCodeVal = keyCode;
            if (evtObj.keyCode !== keyCode) {
                console.log("keyCode " + evtObj.keyCode + " 和 (" + evtObj.which + ") 不匹配");
            }
        }
        el.dispatchEvent(evtObj);
    } else if(doc.createEventObject){
        evtObj = doc.createEventObject();
        evtObj.keyCode = keyCode;
        el.fireEvent('on' + evtType, evtObj);
    }
}
网友评论