小议window.event || ev

以前做项目时就遇到这个问题,但是太懒没有总结,今天来总结一下

onclick="alert(arguments.callee)"这句随便放在某个元素中,试试不同的浏览器会有弹出什么?

结果:

IE7和IE8-------> function onclick(){alert(arguments.callee)}不得不说这俩老小子跟不上时代的步伐,只能靠程序员拖着走.IE6已经被微软放弃,听说阿里都不用再兼容到IE6

IE9、firefox、chrome------>function onclick(event){alert(arguments.callee)}

可能会有人不知道arguments,先来说说这个对象,没错,是对象,一个类似数组的对象

很多js库都利用了arguments对象,所以agruments对象对于javascript程序员来说是必需熟悉的。

alert(arguments instanceof Array);//返回false

alert(typeof(arguments));//返回object

 作用之一   可以创建一个灵活的函数

当函数参数不确定时,but通过arguments就可以方面的知道函数参数的具体个数

注意:arguments是实参的副本,也就是说与形参无关!

arguments.callee 返回正在执行的函数本身的引用,怎么理解呢,对函数本身的引用,对,就是这样,是不是很熟悉,递归呀,递归不就是引用了自身,callee方法可以完美实现递归!

还有一个caller方法,在这儿就不说了

回到刚开始的地方

因为存在兼容性问题,所以我们经常需要这样写

function Function(ev){
     var event = window.event||ev;
}

  另外,当一个函数没有实参时,arguemgns对象的第一个值就是event对象。

时间: 2024-10-13 13:13:28

小议window.event || ev的相关文章

js——ev || window.event,event.srcElement || event.target

参考:https://blog.csdn.net/u012528184/article/details/41694155 https://www.cnblogs.com/lilirufeng/p/6045969.html 注:我用的是vue,一般js同理. 页面: <div @click="getAttribute"> <div v-for="(item,index) in list" :key="index"> <

js window.event对象解析

event代表事件的状态,例如触发event对象的元素.鼠标的位置及状态.按下的键等等. event对象只在事件发生的过程中才有效. 1.altKey    描述:    检查alt键的状态. 语法:    event.altKey 可能的值:    当alt键按下时,值为 TRUE ,否则为 FALSE .只读.2.button    描述:    检查按下的鼠标键. 语法:    event.button 可能的值:    没按键    按左键    按右键     按左右键    按中间键

e = e || window.event用法细节讨论

e = e || window.event是我们在做事件处理时候区分IE和其他浏览器事件对象时常用的写法.但是这行兼容性代码有没有必要出现在所有的事件句柄中呢?标准事件调用方式需要这行代码吗?下边我们做详细讨论. 在讨论之前,如果有些忘记或者不熟悉事件对象的先参考其他资料,或者看看这个连接的资料http://wenku.baidu.com/view/400a89f4f61fb7360b4c65ca.html 这里作者把四种主要的事件调用方式总结了出来,本文的讨论也是在此之上延伸说明. <!DOC

ev||event 和event||ev

var oEevent=ev||event 这一句这么写是要兼容各个浏览器, event是事件对象(也是windows的属性),但不是标准的,只在部分浏览器中存在,像火狐就不能识别,如果直接在火狐中用event,会报错,导致后面的js无法进行下去: 在FireFox浏览器中,事件绑定的函数要获取到事件本身,需要从函数中传入,而IE等浏览器则可以直接使用event或者window.event得到事件本身. 所以上面的问题,解决方法可以给使用事件对象的那个函数传入event形参 而像上面的如果通过传

window.event

window.event代表着事件对象的状态.只有在事件发生时生效.如鼠标.键盘等事件被触发时这个对象才存在.window.event这只在IE下是这样的.他并不是标准..也就是说其他浏览器并不支持.在W3C标准支持的浏览器下事件对向是引发事件涵数的第一个参数,参数名随意,在下面的例子中我的事件对象的参数名是evt,也可以定义为其他名字.为了兼容IE浏览器可以这样写 <style type="text/css"> #obj{background:red;width:300p

window.event.srcElement与window.event.target 触发事件的元素

IE浏览器支持window.event.srcElement , 而firefox支持window.event.target:<input type="text" onblur="alert(this.value)">//正确滴 ****************** <input type="text" onblur="method()">//错的啦<script>function meth

解决webkit浏览器中js方法中使用window.event提示未定义的问题

这实际上是一个浏览器兼容性问题,根源百度中一大堆,简要说就是ie中event对象是全局变量,所以哪里都能使用到,但是webkit内核的浏览器中却不存在这个全局变量event,而是以一个隐式的局部变量的形式传入(后文会详说). function myfunc(param){ alert(window.event); } //ie中 <input type="button" onclick="myfunc('testie')" > //一切正常 //webk

Js中的this和window.event.srcElement

我们先看一个简单的例子: <input type="text" onblur="alert(this.value)"/>完全没有问题. 那么什么情况下不可以用? fuction method() {    alert(this.value); } <input type="text" onblur="method()"/>这个就不可以,因为method()是被响应函数调用的函数. 那么这种情况下怎么办?

Ember——window.event.returnValue=false

window.event.returnValue=false放到提交表单中的onclick事件中则不会提交表单,如果放到超链接中则不执行超链接 <a href="/bookS/s/yimi/book-action-revert/8/" onclick="return aDel('确定还书?')" >还书</a> function aDel(msg){ if(confirm(msg)){ return true; } else{ // stop