IE与firefox事件处理
在ie中,事件对象是作为一个全局变量来保存和维护的。 所有的浏览器事件,不管是用户触发
的,还是其他事件, 都会更新window.event 对象。 所以在代码中,只要轻松调用 window.event
就可以轻松获取 事件对象, 再 event.srcElement 就可以取得触发事件的元素进行进一步处理
在ff中, 事件对象却不是全局对象,一般情况下,是现场发生,现场使用,ff把事件对象自动传
递给对应的事件处理函数。 在代码中,函数的第一个参数就是ff下的事件对象了。
以上是我个人对两个浏览器下的事件处理方法的粗浅理解,可能说得不是很明白,我写些代码来
详细说明一下
复制代码 代码如下:
<button id="btn1">按钮1</button>
<button id="btn2">按钮2</button>
<button id="btn3">按钮3</button>
<script>
window.onload=function(){
document.getElementById("btn1").onclick=foo1
document.getElementById("btn2").onclick=foo2
document.getElementById("btn3").onclick=foo3
}
function foo1(){
//ie中, window.event使全局对象
alert(window.event) // ie下,显示 "[object]" , ff下显示 "undefined"
//ff中, 第一个参数自动从为 事件对象
alert(arguments[0]) // ie下,显示 "undefined", ff下显示 "[object]"
}
function foo2(e){
alert(window.event) // ie下,显示 "[object]" , ff下显示 "undefined"
//注意,我从来没有给 foo2传过参数哦。 现在 ff自动传参数给 foo2, 传的参数e 就是事件对象了
alert(e) // ie下,显示 "undefined", ff下显示 "[object]"
}
function foo3(){ //同时兼容ie和ff的写法,取事件对象
alert(arguments[0] || window.event) // ie 和 ff下,都显示 "[object]"
var evt=arguments[0] || window.event
var element=evt.srcElement || evt.target //在 ie和ff下 取得 btn3对象
alert(element.id) // btn3
}
</script>
看到这里,我们似乎对 ie和ff的事件处理方式都已经理解了,并找到了解决的办法。
但是。。。。事情还没有结束。
看代码
复制代码 代码如下:
<button id="btn" onclick="foo()">按钮1</button>
<script>
function foo(){
alert(arguments[0] || window.event)
}
</script>
很不幸,我们 foo给我们的结果是 undefined, 而不是期望的 object
原因在于 事件绑定的方式
onclick="foo()" 就是直接执行了, foo() 函数,没有任何参数的,
这种情况下 firefox没有机会传递任何参数给foo
而 btn.onclick=foo 这种情况, 因为不是直接执行函数,firefox才有机会传参数给foo
解决方法:
方法一:比较笨的方法,既然 firefox没有机会传参数,那么自己勤快点,自己传
复制代码 代码如下:
<button id="btn" onclick="foo(event)">按钮</button>
<script>
function foo(){
alert(arguments[0] || window.event)
var evt=arguments[0] || window.event
var element=evt.srcElement || evt.target
alert(element.id)
}
</script>
方法二: 自动查找
复制代码 代码如下:
<button id="btn4" onclick="foo4()">按钮4</button>
<script>
function foo4(){
var evt=getEvent()
var element=evt.srcElement || evt.target
alert(element.id)
}
function getEvent(){ //同时兼容ie和ff的写法
if(document.all) return 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;
}
</script>
方法二由 lostinet原创,我在其基础上有所改进, 原函数如下
复制代码 代码如下:
function SearchEvent()
{
//IE
if(document.all)
return window.event;
func=SearchEvent.caller;
while(func!=null)
{
var arg0=func.arguments[0];
if(arg0)
{
if(arg0.constructor==Event)
return arg0;
}
func=func.caller;
}
return null;
}
简单总结:
以上两个解决方法中,都正确处理 ff和ie下 的事件处理 (不管是onclick="foo()",方式还是 onclick=foo方式)
但是个人建议用 getEvent() 方法来统一处理 事件问题。
相关推荐:
什么是seo运营,什么是seo营销 ,ai绘画沙地
ChatGPT198元永久会员,开启智慧之门,体验AI的极致服务!,老孙教ai
文章AI生成标题:让创作更轻松,内容更精彩
什么是SEO金融,seo是做什么的 ,ai中转程序
打造内容创作新时代:有言AI生成助力创作者释放灵感
ChatGPT免登录:轻松畅聊,无需注册,快速体验AI智能助手,眼泪ai
SEO找词:如何精准找到高效关键词,提升排名和流量,河源网站优化平台
SEO希望:如何通过SEO优化实现网站突破,迈向成功之路,品牌网站推广软件
seo逻辑是什么,seo思路 ,语音主播怎么ai写作业
SEO外链建设:提升网站排名的关键策略,ai偏执
SEO考核:如何通过精准的SEO优化提升网站排名与流量,茶艺营销推广方案怎么写
SEO外包:提升网站排名与品牌曝光的最佳选择,大创建设网站
OpenArtAI如何进入:数字艺术的未来之门,分析海报ai
SEO添加:提升网站流量与排名的必备策略,seo团队成员中国人
SEO难吗?揭秘SEO背后的真相,让你轻松上手!,大旺百度网站推广
“只能写作”:在创作的世界里,选择文字,就是选择自由,云南关键词排名推广报价
AI缩写文档:革新文档管理与自动化的未来,ai聊天中文
seo要学什么技术,seo要学什么技术好 ,ai.fale
ChatGPT翻译打不开?解决方法!,ai爱股票
SEO薪资这些,你也能月入过万!,天水网站建设公司
WPJVX:开启数字化未来的智慧平台,关键词排名技术咨询乐云seo
SEO优化与SEM广告:提升品牌曝光与流量的双重利器,ai接回头
SEO网络营销:如何通过精准优化提升品牌价值,青州建设网站电话
ChatGPT充值打不开?这几招教你轻松解决问题!,免费的ai写作绘图
SEO关键词推广软件官网-助力企业实现高效精准的网络营销,圈圈ai
AI文章比对技术:引领写作与内容审核的新革命,ai智能写作小说免费
seo线索收集是什么,seo线索收集是什么意思 ,ai生活ai童童
AI一键生成文章网页版,让内容创作更简单高效
SEO技巧提升网站流量和排名,助力企业快速崛起,ai080206.
企业如何借助SEO咨询实现精准流量引爆,助力业绩提升,立刻推广的旅游线下营销
ChatGPT宕机恢复时间如何解决用户焦虑与技术背后的故事,ai人工智能写作火山
为什么做seo的人很少,为了什么做seo ,ai不负你
ChatGPT的超链接点不开?解决方法一网打尽!,情感ai写作指令是什么
AI缩写文本:助力智能生活的革新力量,ai智能写作生成神器下载
seo网络推广是什么,seo网络推广是什么意思 ,ai哪里注音
AI网页版本:开启智能时代的新篇章,拼音标调ai
SEO要好,网站流量翻倍的关键秘诀,品牌网站建设关键词优化
GPT在智能聊天机器人中的作用:重塑沟通体验,开创智能未来,百万级ai
SEO监控:精准把握网站排名与优化成效的利器,湖南seo排名商家名单
AI网站开发与代码创新:引领未来数字化变革的关键,ai ay规则
seo诊断什么意思,seo诊断a5 ,约瑟夫ai
ChatGPT安装包Windows版-让智能助手触手可得,q和ai
seo计算了什么,seo的常用术语 ,ai智能有意思的口令
SEO任何:如何通过精准优化让网站流量突破极限,太原网站建设培训班
SEO优化顾问:让您的网站脱颖而出的秘密武器,ai ps 群
ChatGPTO1Pro模型:开启AI新纪元,免费应用带来无尽可能,苹果上的ai写作在哪里
ChatGPT怎么有梯子?突破网络限制,轻松畅享AI智能,ai对唱音响
ChatGPT怎么打开不了?全方位解决方案!,大庆ai
ChatGPT打不开了吗?如何快速解决常见问题,恢复顺畅体验!,ai13212511845
一秒采集:提升效率、创造价值的秘密武器,苏州网站整站优化