JS获取事件源对象
发现问题:
- 在复杂事件处理过程中,很可能会丢失event事件对象,特别是IE和FireFox两大浏览器,这个时候要捕获事件源就非常困难……
- 如果在事件处理过程中,需要不断地传递event事件对象作为参数,这是一个非常痛苦的事情……
解决问题:
- 使用caller函数可以获取事件堆栈,通过简单分析来获取事件源对象,彻底解决事件源获取问题。
- 同时也解决所有浏览器兼容问题。亲测如下语句支持绝大部分浏览器(Chrome/FireFox/IE/Safari/Opera)
Javascript源代码:
//获取事件源的ID
function getTarget() {
    var evt = getEvent();
    var eventFrom = evt.target || evt.srcElement;
    if(eventFrom.nodeName == "OPTION") {
        eventFrom = eventFrom.parentElement;
    }
    return eventFrom.id;
}
//获取事件源
function getEvent() {
if (typeof(event) != "undefined" || window.event) return event || window.event;
func = getEvent.caller;
while (func != null) {
var arg0 = func.arguments[0];
if (arg0) { if ((arg0.constructor == Event || arg0.constructor == MouseEvent) || (typeof (arg0) == "object" && arg0.preventDefault && arg0.stopPropagation)) { return arg0; } }
func = func.caller;
}
return null;
}
JS获取事件源对象的更多相关文章
- js获取事件源
		js获取事件源: 1. event.srcElement.nodeName //获取事件源对象,但是火狐不支持event 2. 
- (转)JS获取当前对象大小以及屏幕分辨率等
		原文 JS获取当前对象大小以及屏幕分辨率等 <script type="text/javascript">function getInfo(){ var ... 
- JS获取当前对象大小以及屏幕分辨率等...
		<!DOCTYPE html> <html> <head> <meta charset="utf-8"/> <meta nam ... 
- 【Javascript Demo】JS获取当前对象大小以及屏幕分辨率等
		效果如下: 代码如下: <html> <head> <title>获取当前对象大小以及屏幕分辨率等</title> <body> <d ... 
- javascript获取事件源对象和产生事件的对象
		事件源对象是指event对象,其封装了与事件相关的详细信息,比如按键状态. 获取事件源对象的方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1. ... 
- js获取事件源及触发该事件的对象
		怎样获取事件源及触发该事件的对象,方法有非常多,js中能够通过event来实现.以下有个不错的演示样例,感兴趣的朋友能够參考下: function myfunction(event) { event ... 
- 前端页面js与flash交互——js获取flash对象,并传递参数
		背景介绍: 最近在搞一个项目,涉及到图片选取,裁剪,上传等,由于浏览器安全性问题,js无法获取到<input type="file">中选取的文件路径,而且对照片的裁剪 ... 
- js获取textaera对象(object)的值
		for(i in pstrWord ){ alert(i); //获得属性 alert(pstrWord[i]); //获得属性值 } 1.js输出object对象方法如下: function wri ... 
- js获取dom对象style样式的值
		js获取到的dom对象的style通常是没有值得,因为我们都写在外部文件中,从慕课网上见到讲师封装的一个方法,挺不错.特此记录下来. function getStyle(obj,attr){ if(o ... 
随机推荐
- bzoj 1090 [SCOI2003]字符串折叠(区间DP)
			[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=1090 [题意] 给定一个字符串,问将字符串折叠后的最小长度. [思路] 设f[i][j ... 
- Android多媒体--MediaCodec的实例化方法
			*由于作者水平限制,文中难免有错误和不恰当之处,望批评指正. *转载请注明出处:http://www.cnblogs.com/roger-yu/ MediaCodec的实例化方法主要有两种: 1.使用 ... 
- mac 添加安卓设备的支持
			1. 把android设备插到mac电脑上 2. 首先可以看一下之前在该mac电脑上有没有添加过这个 , 命令 : adb devices 如果显示出,下面字样,说明之前添加过了,下面就可以 ... 
- Hadoop应用开发实战案例 第1周
			本课程的基础课程是,Hadoop数据分析平台课程.相信,能看我本博文的朋友,是有一定的基础了. 只是前个课程是讲解,这个课程是应用. 第一层是:数据源层,代表有生产线上的数据,比如关系型数据库orca ... 
- Myeclipse  快捷键设置和自动提示设置
			1.快捷键设置和调整 2.自动提示信息设置与调整 
- struts2+Hibernate4+spring3+EasyUI环境搭建之四:引入hibernate4以及spring3与hibernate4整合
			1.导入hibernate4 jar包:注意之前引入的struts2需要排除javassist 否则冲突 <!-- hibernate4 --> <dependency> & ... 
- protobuf  作为配置文件
			公司每个project代码中,都有一个Config类,作为模块启动的配置.其实现如下 struct Config { int num; char * file_name; int load_from_ ... 
- Oracle  表数据去重
			Oracle数据库中重复数据怎么去除?使用数据表的时候经常会出现重复的数据,那么要怎么删除呢?下面我们就来说一说去除Oracle数据库重复数据的问题.今天我们要说的有两种方法. 一.根据rowid来去 ... 
- HDU 5676  ztr loves lucky numbers (模拟)
			ztr loves lucky numbers 题目链接: http://acm.hust.edu.cn/vjudge/contest/121332#problem/I Description ztr ... 
- ecstore  后台登陆跳转到 api失败,中心请求网店API失败
			解决过程没有具体参与,官方解决后回复的邮件,可以参考一下: 后台登陆错误图: 商派解决方法邮件: 特别注意:这个错误提示有时候也跟ecstore的nginx服务器伪静态有关,具体参考: htt ... 
