event = (event)?event:window.event; 求教

wangdotnet 2007-07-25 10:24:17
function t(event){
event = (event)?event:window.event;
...
}
<body onmousedown="t(event)">
知道这是为了兼容浏览器 但不知道是为什么
谁能解释一下?越详细越好
...全文
3755 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
wangdotnet 2007-07-25
  • 打赏
  • 举报
回复
好多的星星呀
Go_Rush 2007-07-25
  • 打赏
  • 举报
回复

firefox 和 ie 事件处理的细节,研究,再研究-----书写同时兼容ie和ff的事件处理代码

http://www.cnblogs.com/ashun/archive/2006/11/27/event_javascript_ie_firefox_gorush.html
JK_10000 2007-07-25
  • 打赏
  • 举报
回复
event = (event)?event:window.event;
可以改成这种写法:
event=event||window.event
hij333 2007-07-25
  • 打赏
  • 举报
回复
aa = event? event :window.event ;

你在网页中就可以直接用aa代表event或者 window.event

这样不就是做到兼容了吗!
wangdotnet 2007-07-25
  • 打赏
  • 举报
回复
e=e?e:window.event
这句的意思可能不是有人说的 为了浏览器兼容
看这段代码,IE6.0
<body >
clickMe
</body>
<script language="javascript" type="text/javascript">
document.body.onclick = function(){
alert(event);
}
</script>
当单击页面上的文字“clickMe”时 和 单击 空白区域时 弹出的对话框不同

这是为什么
wangdotnet 2007-07-25
  • 打赏
  • 举报
回复
还是不明白
LxcJie,既然
<input type="button" value="clickMe" onclick="doIt(event)">
<script language="javascript">    
function doIt(oEvent){    
alert(oEvent);    
}    
</script>
可以做到二者兼容,为什么还要写成这样
function tracking(e){
e = e ? e : window.event;


LxcJie 2007-07-25
  • 打赏
  • 举报
回复
IE中可以直接使用event对象,但是Mozilla不可以直接使用。

例如:
IE ONLY          
<input type="button" value="clickMe" onclick="doIt()">
<script language="javascript">    
function doIt(){    
alert(event);    
}    
</script>      

这段代码在Mozilla浏览器中是不能正常工作的,因为Mozilla浏览器中没有默认的event对象,只能在事件发生的现场使用。
下面看一下两者都兼容的代码:
<input type="button" value="clickMe" onclick="doIt(event)">
<script language="javascript">    
function doIt(oEvent){    
alert(oEvent);    
}    
</script>

综上所述,为了进一步无缝合并,采用了
event = (event)?event:window.event;
这种写法。
hij333 2007-07-25
  • 打赏
  • 举报
回复
http://www.dezai.cn/article_print.asp?articleId=14638
wangdotnet 2007-07-25
  • 打赏
  • 举报
回复
那么为什么还要加上这句代码呢?这是为了兼容不同的函数调用方法,看这段代码:
<body>
</body>
<script>
function t(e)
{
alert(e);// IE:undefined FF: [object]
}
document.body.onkeypress=t;//注意这里没有人为传入任何参数
</script>
这段代码在IE 下没有获得参数e,显示undefined。在FF下能够得到参数e,显示[object].
这是因为
在ie中,事件对象是作为一个全局变量来保存和维护的。 所有的浏览器事件,不管是用户触发的,还是其他事件, 都会更新window.event 对象。 所以在代码中,只要轻松调用 window.event就可以轻松获取 事件对象, 再 event.srcElement 就可以取得触发事件的元素进行进一步处理
在ff中, 事件对象却不是全局对象,一般情况下,是现场发生,现场使用,ff把事件对象自动传递给对应的事件处理函数。在代码中,对应的事件处理函数的第一个参数就是ff下的事件对象了。可以用下面的代码证实,
<body>
</body>
<script>
function t()
{
alert(arguments[0]);// ff下显示 "[object]", ie下,显示 "undefined",
}
document.body.onkeypress=t;
</script>

那么,要兼容浏览器和调用方法,可以修改函数,如下:
function t(e)
{
e=e?e:window.event;
alert(e);//
}
在ff下不论哪种调用方法传入函数的参数e 总是有效的,表示当前触发的event,
在ie下 本文开头的第一种调用方法(<body onkeypress="t(event)">)传入的参数e也是有效的,表示当前触发的event。第二种调用方法(document.body.onkeypress=t;)传入的参数e是无效的。由上可以推断出 只要传入的参数e是无效的那么浏览器一定是ie。ie浏览器中用window.event 对象表示事件对象。
wangdotnet 2007-07-25
  • 打赏
  • 举报
回复
参照各位高手的
自己总结了一下
看下面代码:
<body onkeypress="t(event)">
</body>
<script>
function t(e)
{
alert(e);
}
</script>
在IE,FF 中都能运行。也就是说这样已经实现了浏览器兼容。
rjzou2006 2007-07-25
  • 打赏
  • 举报
回复

ie中 window.event 与 event 有什么区别?


没有区别

wangdotnet 2007-07-25
  • 打赏
  • 举报
回复
ie中 window.event 与 event 有什么区别?
wangdotnet 2007-07-25
  • 打赏
  • 举报
回复
e=e?e:window.event
这句的意思可能不是有人说的 为了浏览器兼容
看这段代码,IE6.0
<body >
clickMe
</body>
<script language="javascript" type="text/javascript">
document.body.onclick = function(){
alert(event);
}
</script>
当单击页面上的文字“clickMe”时 和 单击 空白区域时 弹出的对话框不同

这是为什么
////////////////////////////////////////////////////////////////////////////////
作废 作废

87,924

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧