如何对指定的窗口模拟键盘和Java 鼠标事件和键盘事件联用

&nbsp>&nbsp
&nbsp>&nbsp
&nbsp>&nbsp
JavaScript 模拟键盘事件和鼠标事件(比如模拟按下回车等)Script
摘要:原文链接:http://blog.csdn.net/lovelyelfpop/article/details/最近代码中有个功能需要用到手动触发键盘事件的功能。但键盘事件的fire在各浏览器下实现不一样,下面分别说明:1.IE下没什么问题,创建事件对象、对对象的keyCode属性赋值,然后再抛出来就行了:evtObj&=&document.createEventObject();evtObj.keyCode=keyCodeel.fireEv
原文链接:http://blog.csdn.net/lovelyelfpop/article/details/
最近代码中有个功能需要用到手动触发键盘事件的功能。但键盘事件的fire在各浏览器下实现不一样,下面分别说明:
1. IE下没什么问题,创建事件对象、对对象的keyCode属性赋值,然后再抛出来就行了:
evtObj&=&document.createEventObject();evtObj.keyCode=keyCodeel.fireEvent('on'+evtType,&evtObj);
2. Firefox 需要通过document.createEvent创建KeyEvents对象,再通过initKeyEvent方法对事件对象初始化
evtObj&=&document.createEvent('KeyEvents');evtObj.initKeyEvent(&evtType,&true,&true,&window,&false,&false,&false,&false,&keyCode,&0&);
initKeyEvent 参考:https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/initKeyEvent&
3. Chrome/Safari/Opera
通过document.createEvent创建UIEvents对象,初始化后再在该对象上挂载按键值。
evtObj&=&document.createEvent('UIEvents');&evtObj.initUIEvent(&evtType,&true,&true,&window,&1&);
initUIEvent 参考:https://developer.mozilla.org/en-US/docs/Web/API/UIEvent/initUIEvent&
Chrome和Opera可以先将keyCode属性delete掉后,再用Object.defineProperty方法重新为它赋值:
delete&evtObj.keyCObject.defineProperty(evtObj,&keyCode&,{value:keyCode});
有些安卓浏览器,此法无效,需要用下面的方式:
Object.defineProperty(evtObj,&'keyCode',&{&&&&get&:&function()&{&return&this.keyCodeV&}});&&&&&Object.defineProperty(evtObj,&'which',&{&&&&get&:&function()&{&return&this.keyCodeV&}});evtObj.keyCodeVal&=&keyC
最后,封装好的function大概就是这样:&
function&fireKeyEvent(el,&evtType,&keyCode){ var&doc&=&el.ownerDocument,
win&=&doc.defaultView&||&doc.parentWindow,
evtO if(doc.createEvent){
if(win.KeyEvent)&{
evtObj&=&doc.createEvent('KeyEvents');
evtObj.initKeyEvent(&evtType,&true,&true,&win,&false,&false,&false,&false,&keyCode,&0&);
evtObj&=&doc.createEvent('UIEvents');
Object.defineProperty(evtObj,&'keyCode',&{
&&&&&&&&get&:&function()&{&return&this.keyCodeV&}
&&&&});&&&&&
&&&&Object.defineProperty(evtObj,&'which',&{
&&&&&&&&get&:&function()&{&return&this.keyCodeV&}
evtObj.initUIEvent(&evtType,&true,&true,&win,&1&);
evtObj.keyCodeVal&=&keyC
if&(evtObj.keyCode&!==&keyCode)&{
&&&&&&&&console.log(&keyCode&&&+&evtObj.keyCode&+&&&和&(&&+&evtObj.which&+&&)&不匹配&);
el.dispatchEvent(evtObj); }& else&if(doc.createEventObject){
evtObj&=&doc.createEventObject();
evtObj.keyCode&=&keyC
el.fireEvent('on'&+&evtType,&evtObj); }}
使用方法: 假设模拟回车
fireKeyEvent(topWin.__activeElement, 'keydown', 13);
使用方法: 假设模拟回车
fireKeyEvent(topWin.__activeElement, 'keydown', 13);
以上是的内容,更多
的内容,请您使用右上方搜索功能获取相关信息。
若你要投稿、删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内给你回复。
新用户大礼包!
现在注册,免费体验40+云产品,及域名优惠!
云服务器 ECS
可弹性伸缩、安全稳定、简单易用
&40.8元/月起
预测未发生的攻击
&24元/月起
你可能还喜欢
你可能感兴趣
阿里云教程中心为您免费提供
JavaScript 模拟键盘事件和鼠标事件(比如模拟按下回车等)Script相关信息,包括
的信息,所有JavaScript 模拟键盘事件和鼠标事件(比如模拟按下回车等)Script相关内容均不代表阿里云的意见!投稿删除文章请联系邮箱:zixun-group@service.aliyun.com,工作人员会在五个工作日内答复
售前咨询热线
支持与服务
资源和社区
关注阿里云
International涓婚? : 鍏充簬mac涓嬮潰濡備綍妯℃嫙閿?洏缁勫悎浜嬩欢
鍙?彲璞}

我要回帖

更多关于 键盘和鼠标事件 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信