Javascript dispatchEvent单击在IE9和IE10中不起作用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Javascript dispatchEvent单击在IE9和IE10中不起作用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2250字,纯文字阅读大概需要4分钟。
内容图文
![Javascript dispatchEvent单击在IE9和IE10中不起作用](/upload/InfoBanner/zyjiaocheng/677/48d93f8a69584bcabe4d8d0ca5e6fc3d.jpg)
我正在尝试在ExtJs的应用程序构建中模拟鼠标事件,例如单击,鼠标悬停等.我正在使用以下代码来模拟点击,
function triggerEvent(element, eventName)
{
if (document.createEvent)
{
var evt = document.createEvent('MouseEvents');
evt.initEvent(eventName, true, true);
return element.dispatchEvent(evt);
}
}
var btn = document.getElementById("loginButton");
triggerEvent(btn, "click");
这在chrome和firefox上可以正常工作,但在IE9和IE10上则不能.如果我使用btn.fireEvent(‘onlclick’),则它在IE9中可以正常工作(在IE10中未选中). IE9及更高版本中都支持document.createEvent. IE10,但我不确定为什么我的代码无法正常工作.
解决方法:
一段时间前,我在自定义事件中遇到了相同的问题,并通过使用在另一个问题中找到的代码来解决:
Custom events in IE without using libraries
实际上,您不需要使用所有代码,它们是包装浏览器兼容性的3个函数.
但我也建议您使用.click方法,这样可以更轻松地解决您的问题(至少对于常规点击而言)
http://www.w3schools.com/jsref/met_html_click.asp
所以做
document.getElementById("loginButton").click();
我在这里粘贴另一个问题的sergey gospodarets代码,这可能会很有用.
function triggerEvent(el,eventName){
var event;
if(document.createEvent){
event = document.createEvent('HTMLEvents');
event.initEvent(eventName,true,true);
}else if(document.createEventObject){// IE < 9
event = document.createEventObject();
event.eventType = eventName;
}
event.eventName = eventName;
if(el.dispatchEvent){
el.dispatchEvent(event);
}else if(el.fireEvent && htmlEvents['on'+eventName]){// IE < 9
el.fireEvent('on'+event.eventType,event);// can trigger only real event (e.g. 'click')
}else if(el[eventName]){
el[eventName]();
}else if(el['on'+eventName]){
el['on'+eventName]();
}
}
function addEvent(el,type,handler){
if(el.addEventListener){
el.addEventListener(type,handler,false);
}else if(el.attachEvent && htmlEvents['on'+type]){// IE < 9
el.attachEvent('on'+type,handler);
}else{
el['on'+type]=handler;
}
}
function removeEvent(el,type,handler){
if(el.removeventListener){
el.removeEventListener(type,handler,false);
}else if(el.detachEvent && htmlEvents['on'+type]){// IE < 9
el.detachEvent('on'+type,handler);
}else{
el['on'+type]=null;
}
}
var _body = document.body;
var customEventFunction = function(){
alert('triggered custom event');
}
// Subscribe
addEvent(_body,'customEvent',customEventFunction);
// Trigger
triggerEvent(_body,'customEvent');
内容总结
以上是互联网集市为您收集整理的Javascript dispatchEvent单击在IE9和IE10中不起作用全部内容,希望文章能够帮你解决Javascript dispatchEvent单击在IE9和IE10中不起作用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。