`
guanchuanjie
  • 浏览: 3890 次
文章分类
社区版块
存档分类
最新评论

fireEvent方法

阅读更多
fireEvent方法
转载自:http://millerrch.iteye.com/blog/1278350
在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.getElementByIdx_x("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.getElementByIdx_x("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.getElementByIdx_x("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.getElementByIdx_x("id1").onclick();'>click me!</button>
<button onclick='document.getElementByIdx_x("id1").fireEvent("onclick")'>fireEvent !</button>
分享到:
评论

相关推荐

    IE的fireEvent方法概述及应用

    `fireEvent`与常用的`onclick`方法存在显著的区别。首先,`onclick`方法要求元素已经定义了`onclick`事件处理函数,否则执行时会抛出"对象不支持此属性或方法"的错误。例如,当尝试调用一个没有`onclick`事件的元素...

    JavaScript之IE的fireEvent方法详细解析

    JavaScript中的`fireEvent`方法是Internet Explorer浏览器特有的一个事件触发函数,它允许开发者模拟用户对DOM元素的操作,比如点击、提交等。与标准的事件处理方式不同,`fireEvent`在某些情况下能触发事件冒泡,...

    Firefox不支持click方法的解决

    如果不支持,则使用 fireEvent 方法来触发 onclick 事件。如果都不支持,则使用 createEvent 方法来创建一个点击事件,并使用 dispatchEvent 方法来触发该事件。 需要注意的是,在 Firefox 浏览器中,对于非 input ...

    js触发onchange事件的方法说明

    js中onchange事件是在客户端改变输入控件的值,比如一个textbox,会出发的一个事件。但是如果在js代码中改变一个textbox的value,而不是通过键盘输入改变一个...同理,js中使用fireEvent方法还可以触发其他的空间事件。

    读jQuery之十四 (触发事件核心方法)

    而fireEvent方法则主要被IE浏览器支持,它的用法是直接调用元素的fireEvent方法,并附带一个前缀' on'的事件类型字符串,例如: ```javascript el.fireEvent('onclick'); ``` ### jQuery的触发事件方法 在上述...

    EXTJS中基于事件的编程探究.pdf

    在EXTJS中,触发一个事件需要调用fireEvent方法,该方法具备如下的格式:fireEvent(String eventName,Object... args),其中,第一个参数为要触发事件的名称,之后可以跟有0个或多个参数,由开发者根据事件的需求...

    js模拟点击事件实现代码

    // 对于IE浏览器,使用fireEvent方法 if(/msie/i.test(navigator.userAgent)) { sub.fireEvent("onclick"); } else { // 对于其他浏览器,创建一个新的MouseEvent事件,并派发该事件 var e = document....

    Selenium WebDriver精讲

    第十一章提供了一些fireevent方法的替代方案。在某些情况下,直接触发事件可能不如预期那样工作,因此了解其他的事件触发方法变得非常重要。 **fireevent的替代方案**: - 使用JavaScript触发事件。 - 使用Selenium...

    QTP模拟鼠标和键盘事件整理

    ##### 1.2 使用 FireEvent 方法 除了直接调用`MouseClick`外,还可以通过触发HTML元素的事件来间接实现模拟鼠标事件。这种方式尤其适用于触发页面上的特定JavaScript事件。例如,触发`oncontextmenu`事件以模拟右键...

    Windows 脚本技术参考手册

    LogEvent 方法 MapNetworkDrive 方法 Popup 方法 Quit 方法 Read 方法 ReadAll 方法 ReadLine 方法 RegDelete 方法 RegRead 方法 RegWrite 方法 Remove 方法 ...

    javascript触发模拟鼠标点击事件

    事件触发器就是用来触发某个元素下的某个事件,IE下fireEvent方法,高级浏览器(chrome,firefox等)有dispatchEvent方法。 一般我们在元素上绑定事件后,是靠用户在这些元素上的鼠标行为来捕获或者触发事件的,或者...

    vc2005开发ActiveX event步骤

    这里`FireEvent`函数用于实际触发事件,`eventidOnValueChanged`是上一步定义的事件ID,`EVENT_PARAM(VTS_NONE)`表示该事件没有参数传递。 ##### 4. 在控件实现文件中注册事件映射 最后,在控件实现文件(例如`XX...

    js 触发select onchange事件代码

    在不支持fireEvent方法的浏览器中,可以考虑使用W3C标准的dispatchEvent方法或者使用一个通用的触发事件的方法,比如通过创建一个新的事件实例,设置好事件类型,然后使用dispatchEvent方法将事件派发出去。...

    编译的 HTML 帮助文件 (.chm) DHTML手册

    createEventObject 生成当使用 fireEvent 方法时用于传递事件相关信息的 event 对象。 createStyleSheet 为文档创建样式表。 createTextNode 从指定值中创建文本字符串。 detachEvent 从事件中取消指定函数的绑定...

    JS中自定义事件的使用与触发操作实例分析

    例如,在IE8及以下的浏览器版本中,不支持dispatchEvent方法,这时需要使用fireEvent方法。在使用自定义事件时,还需要确保事件名的唯一性,避免与内置事件或其他自定义事件发生冲突。 为了更全面地掌握JavaScript...

    jQuery源码分析之Event事件分析

    对于事件的操作无非是addEvent,fireEvent,removeEvent这三个事 件方法。一般lib都会对浏览器的提供的函数做一些扩展,解决兼容性内存泄漏等问题。第三个问题就是如何得到domReady的状态。 6.1 event的包裹 浏览器的...

Global site tag (gtag.js) - Google Analytics