为了账号安全,请及时绑定邮箱和手机立即绑定

事件处理程序和跨浏览器的解决方案

标签:
JavaScript

1.HTML事件处理程序
<input type="button" value="按钮" id="btn" onclick="alert('hello')">或者
<input type="button" value="按钮" id="btn" onclick="showMessage()"> <script> function showMessage(){ alert('hello world') }</script>
缺点:HTML和JS代码紧密的耦合在一起
2.DOM 0级处理程序
较传统的方式:把一个函数赋值给一个事件处理程序属性。
用的比较多 简单 跨浏览器的优势

<input type="button" value="按钮2" id="btn2">
<script>
var btn2=documentgetElementById('btn2')
btn2.onclick=function(){
     alert('hello world')
}
//删除事件
btn2.onclick=null;
</script>

3.DOM 2级处理程序
DOM级事件定义了两个方法:用于处理指定和删除事件处理程序操作
addEventListener()和removeEventListener()
接收三个参数:要处理的事件名(去掉on)、作为事件处理程序的函数和布尔值(true代表捕获阶段、false代表冒泡阶段)
DOM 0和DOM 2可以为元素添加多个事件处理程序
this可以引用被触发的元素

<input type="button" value="按钮3" id="btn3">

<script>
function showMessage(){
     alert('hello world')
}
var btn3=documentgetElementById('btn3')
//插入事件
btn3.addEventListener('click' showMessage false);
//删除事件
btn3.removeEventListener('click' showMessage false);
</script>

4.IE事件处理程序
attachEvent()添加事件
detachEvent()删除事件、
接受相同的两个参数:事件处理程序的名称,事件处理程序函数
不使用布尔值的原因:IE8以及更早的浏览器只支持时间冒泡
支持IE事件处理程序的浏览器只有IE和OPERA

btn3.attachEvent("onclick",showMes);
btn3.deachEvent("onclick",showMes);

5.跨浏览器的事件处理程序

var eventUtil={
    //添加句柄
    addHandler:function(element,type,handler){
           if(element.addEventListener){
                element.addEventListener(type,handler,false);
                    }
           else if(element.attachEvent){
                    element.attachEvent('on'+type,handler);
                        }
           else{
                  //element.onclick===element['onclick']
//                //字符串+变量中间不能用.
                  element['on'+type]=handler;
                     }
           }

//删除句柄
    removeHandler:function(element,type,handler){
           if(element.removeEventListener){
                element.removeEventListener(type,handler,false);
                    }
           else if(element.detachEvent){
                    element.detachEvent('on'+type,handler);
                         }
           else{
                  //element.onclick===element['onclick']
//                //字符串+变量中间不能用.
                  element['on'+type]=null;
                     }
           }
}
eventUtil.addHandler(btn3,'click',showMes);
点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消