event.srcElement ,event.fromElement,event.toElement
自然,我们都习惯了 IE,在 IE 中要在函数中获得各事件对象很容易,直接用 event、event.srcElemtn、event.fromElement、event.toElement 就行了。在 FireFox 中获得触发事件的元素可以用 event.target,但其他两个 fromElement 和 toElement 就要费些周折。
1、event.srcElement :当前事件的源
- <script language="javascript">
- //addEventListener是为一个事件添加一个监听,使用方法见http://cindylu520.iteye.com/admin/blogs/588652
- //此处if判断是否是火狐浏览器
- if(window.addEventListener) { FixPrototypeForGecko(); }
- function FixPrototypeForGecko()
- {
- //prototype属性允许你向一个对象添加属性和方法
- //__defineGetter__和__defineSetter__是Firefox的特有方法,可以利用来它自定义对象的方法。
- //使用方法见:http://cindylu520.iteye.com/admin/blogs/588667
- //runtimeStyle 运行时的样式!如果与style的属性重叠,将覆盖style的属性!
- HTMLElement.prototype.__defineGetter__("runtimeStyle",element_prototype_get_runtimeStyle);
- //代表事件状态,如事件发生的元素,键盘状态,鼠标位置和鼠标按钮状态。
- window.constructor.prototype.__defineGetter__("event",window_prototype_get_event);
- //event.srcElement当前事件的源,IE下,event对象有srcElement属性,但是没有target属性;Firefox下,event对象有target属性,但是没有srcElement属性.但他们的作用是相当的
- Event.prototype.__defineGetter__("srcElement",event_prototype_get_srcElement);
- //当前事件有移动成分时,如onmouseover、onmouseout等fromElement、toElement表示移动事件的两个端点
- Event.prototype.__defineGetter__("fromElement", element_prototype_get_fromElement);
- Event.prototype.__defineGetter__("toElement", element_prototype_get_toElement);
- }
- function element_prototype_get_runtimeStyle() { return this.style; }
- function window_prototype_get_event() { return SearchEvent(); }
- function event_prototype_get_srcElement() { return this.target; }
- function element_prototype_get_fromElement() {
- var node;
- //relatedTarget 事件属性返回与事件的目标节点相关的节点。
- //对于 mouseover 事件来说,该属性是鼠标指针移到目标节点上时所离开的那个节点。
- //对于 mouseout 事件来说,该属性是离开目标时,鼠标指针进入的节点。
- //对于其他类型的事件来说,这个属性没有用。
- //详情:http://cindylu520.iteye.com/admin/blogs/588678
- if(this.type == "mouseover") node = this.relatedTarget;
- else if (this.type == "mouseout") node = this.target;
- if(!node) return;
- while (node.nodeType != 1)
- node = node.parentNode;
- return node;
- }
- function element_prototype_get_toElement() {
- var node;
- if(this.type == "mouseout") node = this.relatedTarget;
- else if (this.type == "mouseover") node = this.target;
- if(!node) return;
- while (node.nodeType != 1)
- node = node.parentNode;
- return node;
- }
- function SearchEvent()
- {
- if(document.all) return window.event;
- func = SearchEvent.caller;
- while(func!=null){
- var arg0=func.arguments[0];
- if(arg0 instanceof Event) {
- return arg0;
- }
- func=func.caller;
- }
- return null;
- }
- </script>
好了,现在不管是在 IE 中还是在 FireFox 中,触发事件后都有了 event、event.srcElement、event.fromElement、event.toElement 属性了。这就来做个测试吧:
- <script>
- function test(){
- alert("event:" + event +", srcElement:"+event.srcElement.innerHTML+
- ", fromElement:"+event.fromElement.innerHTML + ", toElement:"+event.toElement.innerHTML)
- }
- </script>
- <button onmouseout="test()">MouseOut</button><button onmouseover="test()">MouseOver</button>
页面中有两个按钮 MouseOut 和 MouseOver,你掠过第一个按钮到第二个按钮上是,有看到这样内容的窗口:

从上图可以看出,其实我是在 Google 的 Chrome 浏览器中作的测试,也是有效的。标题虽说是兼容 IE 和 FireFox,但宽松点说就是 IE 和非 IE,因为 IE 总喜欢剑起偏锋,不按规范办事,不过这种事在 IE 8 中是收敛了许多。
event.srcElement ,event.fromElement,event.toElement的更多相关文章
- Javascript中event.srcElement和event.target的区别
event.srcElement 可以捕获当前事件作用的对象,如event.srcElement.tagName可以捕获活动标记名称.注意获取的标记都以大写表示,如"TD",&qu ...
- js的event.srcElement与event.target(触发事件对象)
IE下,event对象有srcElement属性,但是没有target属性; Firefox下,event对象有target属性,但是没有srcElement属性.但他们的作用是相当的,即: fire ...
- event.srcElement 用法笔记e.target
event.srcElement 可以捕获当前事件作用的对象,如event.srcElement.tagName可以捕获活动标记名称. 注意获取的标记都以大写表示,如"TD",&q ...
- event.srcElement兼容处理
在IE下,event对象有srcElement属性,但是没有target属性:Firefox下,even对象有target属性,但是没有srcElement属性.. 解决方法:使用obj(obj = ...
- event.srcElement与event.target的区别
window.event.srcElement与window.event.target 都是指向触发事件的元素,它是什么就有什么样的属性 srcElement是事件初始化目标html元素对象引用,因为 ...
- 浏览器中event.srcElement和event.target的兼容性问题
在IE下,event对象有srcElement属性,但是没有target属性:Firefox下,even对象有target属性,但是没有srcElement属性.. 解决方法:使用obj(obj = ...
- e.target和e.event和event.srcElement
e.target 是目标对象,e.event是目标所发生的事件,event.srcElement捕获当前事件作用的对象 1. $(function(){ $("li:has(ul)" ...
- JS基础篇--JS的event.srcElement与event.target(触发事件对象)
IE下,event对象有srcElement属性,但是没有target属性; Firefox下,event对象有target属性,但是没有srcElement属性.但他们的作用是相当的,即: fire ...
- window.event.srcElement与window.event.target 触发事件的元素 触发事件对象的获取,window.event与时间函数参数的event是同一个 事件对象
判断事件触发的元素: var tag = window.event.target || window.event.srcElement; if (tag.tagName.toLowerC ...
随机推荐
- MongoDB基础入门001--安装
关于mongodb的好处,优点之类的这里就不说了,唯一要讲的一点就是mongodb中有三元素:数据库,集合,文档,其中"集合" 就是对应关系数据库中的"表",& ...
- java web学习总结(四) -------------------HTTP协议
一.什么是HTTP协议 HTTP是hypertext transfer protocol(超文本传输协议)的简写,它是TCP/IP协议的一个应用层协议,用于定义WEB浏览器与WEB服务器之间交换数据的 ...
- 配置文件(App.config文件)
1. 配置文件概述: 应用程序配置文件是标准的 XML 文件,XML 标记和属性是区分大小写的.它是可以按需要更改的,开发人员可以使用配置文件来更改设置,而不必重编译应用程序.配置文件的根节点是 co ...
- javascript实现下雪效果
原理: 1.js动态创建DIV,指定CLASS类设置不同的背景图样式显示不同的雪花效果. 2.js获取创建的DIV并改变其top属性值,当下落的高度大于屏幕高后删除该移动div 3.好像不够完善勿喷 ...
- Linux vi/vim(转载)
Linux vi/vim 所有的 Unix Like 系统都会内建 vi 文书编辑器,其他的文书编辑器则不一定会存在. 但是目前我们使用比较多的是 vim 编辑器. vim 具有程序编辑的能力,可以主 ...
- Introduction to Microsoft Dynamics 365 licensing
Microsoft Dynamics 365 will be released on November 1. In preparation for that, Scott Guthrie hosted ...
- Android 手机卫士--设置密码对话框
本文实现初次设置密码验证过程,首先实现如下效果 本文地址:http://www.cnblogs.com/wuyudong/p/5939823.html,转载请注明出处. 布局如下: <?xml ...
- iOS程序破解——获取.ipa程序包
原文在此 首先肯定不是获取自己的ipa包. 为什么要获取ipa包呢?比如,在仿写一些程序时,避免不了获取它的图片素材等等,那么最快也是最有效的方式就是获取原程序的ipa包.更或者,你想要逆向分析某一款 ...
- routes.rb和link_to的一些规则
rails文档中描述了一个知识,link_to方法用于产生链接,但链接是根据routes.rb中的路由规则来产生的.这又分为面向资源和非面向资源两种产生链接的方法.比如 routes.rb文件中有两条 ...
- JVM-Class文件
一个 Class 文件描述了类或接口的字段,方法,父类,访问权限等全部信息.其实,它只是一种能被 JVM 识别的数据格式,就和 UDP 8字节头部一样,这就是规范,标准!所谓"不闻不若闻之, ...