JavaScript之IE的fireEvent方法详细解析

 更新时间:2013年11月20日 09:34:44   作者:  
刚开始我以为是会跟平时使用onclick()一样,没想到最近在写javascript入门ppt的时候发现了,原来自己太自以为是了!看来还有很多javascript的细节没有掌握好啊

在IE中提供了一个fireEvent方法,顾名思义就是触发某个事件发生的意思。刚开始我以为是会跟平时使用onclick()一样,没想到最近在写javascript入门ppt的时候发现了,原来自己太自以为是了!看来还有很多javascript的细节没有掌握好啊!

现在根据自己的总结详细的记录下fireEvent方法的使用。fireEvent是IE提供的一种方法,msdn文档地址:http://msdn.microsoft.com/en-us/library/ms536423(v=vs.85).aspx

onclick()
我们先看第一段实例代码:

<ul onclick='alert(event.srcElement.innerHTML);'>
<li id='id1'>i am one;</li>
<li id='id2'>i am two;</li>
<li id='id3'>i am three;</li>
</ul>
<button onclick='document.getElementById("id1").onclick();'>click me!</button>

这段代码中我们没有个id1的li添加onclick事件,点击button,会报错,提示“对象不支持此属性或方法”。由此可见,DOM.onclick()需要添加onclick事件之后才能使用。

假如我们把以上的代码修改为:

<ul onclick='alert(event.srcElement.innerHTML);'>
<li id='id1' onclick='alert(1);'>i am one;</li>
<li id='id2'>i am two;</li>
<li id='id3'>i am three;</li>
</ul>
<button onclick='document.getElementById("id1").onclick();'>click me!</button>

此时,点击button会触发onclick事件,但是ul的onclick没有触发,这就表明了DOM.onclick()不存在冒泡。

fireEvent()
我们来看看fireEvent跟onclick()触发事件是否相同。看下面的代码:

<ul onclick='alert(event.srcElement.innerHTML);'>
<li id='id1'>i am one;</li>
<li id='id2'>i am two;</li>
<li id='id3'>i am three;</li>
</ul>
<button onclick='document.getElementById("id1").fireEvent("onclick")'>fireEvent !</button>

点击button后,触发ul的onclick事件,说明fireEvent会引起冒泡,而且没有发生像onclick()提示“对象不支持此属性或方法”,说明即使不添加id1的onclick事件也可以冒泡。
由此可以看出,IE中的fireEvent方法类似模拟用户的鼠标点击行为,而不是单纯的onclick。

总结fireEvent和onclick区别
通过上面的例子可以看出,DOM的fireEvent和onclick(这只是个代表)有以下区别:

onclick需要DOM真正添加了onclick事件,否则会报“对象不支持此属性或方法”错误
onclick不会引起IE的冒泡过程,而fireEvent会引起冒泡,fireEvent更贴近用户真实的行为触发
由第二条得出,fireEvent在即使DOM没有click事件也可以fireEvent,而不会报错(更贴近用户真实行为)
最后可以拿下面的代码测试:

<ul onclick='alert(event.srcElement.innerHTML);'>
<li id='id1' onclick='alert(1);'>i am one;</li>
<li id='id2'>i am two;</li>
<li id='id3'>i am three;</li>
</ul>
<button onclick='document.getElementById("id1").onclick();'>click me!</button>
<button onclick='document.getElementById("id1").fireEvent("onclick")'>fireEvent !</button>

您可能感兴趣的文章:

相关文章

  • JavaScript多态与封装实例分析

    JavaScript多态与封装实例分析

    这篇文章主要介绍了JavaScript多态与封装,结合实例形式分析了JavaScript多态与封装的概念、功能、优缺点以及相关问题与注意事项,需要的朋友可以参考下
    2018-07-07
  • JavaScript 空间坐标的使用

    JavaScript 空间坐标的使用

    这篇文章主要介绍了JavaScript 空间坐标的使用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • js判断PC端与移动端跳转

    js判断PC端与移动端跳转

    本文主要介绍了js判断PC端与移动端跳转的方法,具有很好的参考价值。下面跟着小编一起来看下吧
    2017-03-03
  • javascript实现打砖块小游戏(附完整源码)

    javascript实现打砖块小游戏(附完整源码)

    这篇文章主要为大家详细介绍了javascript实现打砖块小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-09-09
  • JS实现的base64加密、md5加密及sha1加密详解

    JS实现的base64加密、md5加密及sha1加密详解

    这篇文章主要介绍了JS实现的base64加密、md5加密及sha1加密的方法,结合实例形式详细分析了JavaScript各种常见加密方法与实现技巧,需要的朋友可以参考下
    2016-04-04
  • 记一次webapck4 配置文件无效的解决历程

    记一次webapck4 配置文件无效的解决历程

    这篇文章主要介绍了记一次webapck4 配置文件无效的解决历程,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-09-09
  • js实现对table动态添加、删除和更新的方法

    js实现对table动态添加、删除和更新的方法

    这篇文章主要介绍了js实现对table动态添加、删除和更新的方法,涉及javascript针对html中table表格节点的操作技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-02-02
  • JavaScript Reflect Metadata实现详解

    JavaScript Reflect Metadata实现详解

    这篇文章主要介绍了JavaScript Reflect Metadata实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-12-12
  • javascript实现数字配对游戏的实例讲解

    javascript实现数字配对游戏的实例讲解

    下面小编就为大家分享一篇javascript实现数字配对游戏的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2017-12-12
  • JS实现的A*寻路算法详解

    JS实现的A*寻路算法详解

    这篇文章主要介绍了JS实现的A*寻路算法,结合实例形式详细分析了A*寻路算法的概念、原理、实现技巧与相关注意事项,需要的朋友可以参考下
    2018-12-12

最新评论