加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 创业 > 正文

javascript变乱:获取变乱工具getEvent函数

发布时间:2018-10-07 21:10:09 所属栏目:创业 来源:站长网
导读:在javascript开拓中我们会常常获取页面中的变乱工具,然其后处理赏罚这些变乱,譬喻下面的getEvent函数就是获取javascript下的页面变乱工具。 Copy to Clipboard 引用的内容:[www.veryhuo.com]function getEvent(event){ return event || window.event; } 我

在javascript开拓中我们会常常获取页面中的变乱工具,然其后处理赏罚这些变乱,譬喻下面的getEvent函数就是获取javascript下的页面变乱工具。

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] function getEvent(event){
return event || window.event;
}

我们行使getEvent的时辰可以这样挪用。

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] function foo(event){
var evt = getEvent(event);
alert(evt);
}

而且把foo函数绑定到一个onclick变乱上。
可是常用的是foo函数不会有参数,可能第一个参数没有传入,我们可以通过arguments[0]来获取第一个参数。
在IE中event是一个全局变量,即window.event,而在Firefox等赏识器,变乱会作为第一个参数传入foo函数,以是getEvent可以改为:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] function getEvent(event){
return arguments[0] || window.event;
}

这时在一些版本的赏识器,譬喻Firefox 中会呈现获取不到event工具的题目,着实我们可以当作变乱的触发是下面的方法:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] function onclick(event) {
foo();
}

这样,第一个函数是onclick,即event会默认作为第一个参数传入,而foo函数没有将event作为参数传入,这样严峻限定了getEvent的机动性,以是我们必要修改下getEvent函数。

我们知道arguments.callee是函数自己,在匿名函数中可以作为递归行使,那么arguments.callee.caller指的是挪用本函数的上一级函数的函数。
譬喻getEvent的caller为foo,foo的caller为onclick,依次类推……

以是我们的getEvent函数最终可以这样来写:

Copy to ClipboardLiehuo.Net Codes引用的内容:[www.veryhuo.com] function getEvent(){
if(window.event){
return window.event;
}
var f = arguments.callee.caller;
do{
var e = f.arguments[0];
if(e && (e.constructor === Event || e.constructor===MouseEvent || e.constructor===KeyboardEvent)){
return e;
}
}while(f=f.caller);
}

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读