我不能在IE中使用JavaScript触发个人事件。在Firefox中工作得很好。
我的代码是:
var evento;
if(document.createEventObject)
{
evento = document.createEventObject();
document.fireEvent('eventoPersonal', evento);
}
//FF
else
{
evento = document.createEvent('Events');
evento.initEvent('eventoPersonal',true,false);
document.dispatchEvent(evento);
}
但是在IE中尝试执行document.fireEvent('eventoPersonal', evento);
时,无法正常工作。如何在IE中触发NO自定义事件?
在Internet Explorer中,出现错误:执行document.fireEvent('eventoPersonal', evento);
的行中的“无效参数”
6条答案
按热度按时间8yoxcaq71#
Dean Edward's介绍了如何在IE中触发cutsom事件
http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/
它在文章的底部附近
0sgqnhkj2#
我认为答案是-在IE中,您不能**触发不在此列表中的事件:
MSDN - DHTML Events
据我所知,框架存储了一个“自定义”事件名称的注册表,您必须使用它们的实现特定的 trigger 和 handle 函数来处理自定义事件,例如,prototype使用
ondatavailable
事件在后台传递它们的自定义事件。4urapxun3#
你可能需要考虑使用一个库来抽象它。原型和jquery都可以为你处理这个问题。Jquery特别擅长让你用非常简单的代码创建一个事件。
Jquery的文档可以在这里找到:http://docs.jquery.com/Events
fzsnzjdm4#
在IE11文档中.dispatchEvent仍然不起作用,但是现在attachEvent也丢失了,所以另一个解决方案也不起作用。然而,我想出了一个更糟糕的解决方案。:)它涉及到替换addEventListener方法,并如下所示:
希望这对某人有帮助。
cvxl0en25#
当我阅读有关createEventObject方法的MSDN文章页面时,它似乎不是用于创建自定义事件-它是用于创建可以传递给现有事件的自定义对象。
说明:生成一个event对象,以便在使用fireEvent方法时传递事件上下文信息。
http://msdn.microsoft.com/en-us/library/ms536390%28VS.85%29.aspx
更新:您收到“invalid arguments”错误,因为“eventoPersonal”不是可接受的触发事件。
5anewei66#
是的,参考@Don Albrecht,你可以在http://api.jquery.com/trigger/上使用jquery trigger()方法