zoukankan      html  css  js  c++  java
  • Oct 25th

    事件流:描述的是从页面中接受事件的顺序 (IE:事件冒泡流 / Netscape事件捕获流)

    事件冒泡:即事件最开始由最具体的无素(文档中嵌套层次最深的那个节点)接收,然后逐级向上传播到最不具体的那个节点(文档)

    事件捕获:不太具体的节点应该更早接收到元素,而最具体的节点最后接收到事件。

    使用事件处理程序:

    1、HTML事件处理程序,现在不建议使用了。 1. 事件直接加在HTML代码中: 缺点:HTML和js代码高耦合,如果修改,就要修改两个地方:HTML元素内和script函数。

    2、DOM 0级事件处理程序:
    (1)通过var btn=document.getElementById('btn')获取元素;
    (2)通过btn.onclick=function(){alert('Hello')}在元素上添加事件;

    优点:可以给一个元素上添加多个事件处理程序,会按照程序顺序实行程序

    3、DOM2级事件处理程序:

    定义了两个方法,用于处理指定和删除事件处理程序的操作

    addEventListener()

    removeEventListener()

    接收三个参数:要处理的事件名(预定义好的事件名前不加on,如onclick要改为click)、作为事件处理程序的函数、布尔值(useCapture, 一个bool类型。当为false时为冒泡获取(由里向外),true为capture捕捉方式(由外向里))

    定义了两个方法---用于处理指定和删除事件处理程序的操作。【addEventListener()---给某元素添加一个事件监听程序】和【removeEventListener()---删除一个事件。必须传入添加事件时相同的参数】(通过前者添加的事件,只能通过后者删除。如obj.click= null无效)

    DOM2级事件处理程序,ie不支持,ie有专用的事件处理程序。

    DOM2和DOM0级共同优点:可以给一个元素上添加多个事件处理程序,会按照顺序执行。

    *this表示可以引用触发的元素

    4、IE事件处理程序

    attachEvent()添加事件

    detachEvent()删除事件

    接受相同的两个参数:事件处理程序的函数(预定义好的事件名前要加on,如click要改为onclick)和事件处理程序的函数

    不使用第三个参数的原因是:ie8以及更早的浏览器版本只支持事件冒泡

    支持ie事件处理程序的浏览器主要有ie和opera两个浏览器。

    5、跨浏览器事件处理

    var eventUtil={
                //添加句柄
                addEventHandler:function(element,type,handler){
              //dom2级处理程序事件
    if(element.addEventListener){ element.addEventListener(type,handler,false);
              //ie处理程序事件 }
    else if(element.attachEvent){ element.attachEvent('on'+type,handler); }else{ element['on'+type]=handler; } }, //删除句柄 removeEventHandler:function(element,type,handler){ if(element.removeEventListener){ element.removeEventListener(type,handler,false); }else if(element.detachEvent){ element.detachEvent('on'+type,handler); }else{ element['on'+type]=null; } } } var btn=document.getElementById('btn1'); eventUtil.addEventHandler(btn,'click',function(){ alert("这是一个按钮!"); });

    事件对象

    IE8之前 window.event  之后用 event

    1、DOM的事件对象(在触发DOM事件上都会产生一个事件对象)

    (1)、type属性 用于获取事件的类型

    (2)、target属性 用于获取事件的目标

    (3)、stopPropagation() 用于阻止事件冒泡

    (4)、preventDefault() 阻止事件默认行为 <a href="#"></a> 就是阻止比如a标签的跳转行为

    2、ie的事件对象

    (1)、type属性 用于获取事件的类型

    (2)、srcElement属性 用于获取事件的目标

    (3)、cancelBubble属性 用于阻止事件冒泡

    true值表示阻止冒泡,false表示不阻止冒泡

    (4)、returnValue属性 阻止事件默认行为

  • 相关阅读:
    C# Tips Written By Andrew Troelsen
    ASP.NET:性能与缓存
    New Feature In C# 2.0
    .NET Remoting中的通道注册
    通过应用程序域AppDomain加载和卸载程序集
    Some BrainTeaser in WinDev, Can you Solve them?
    ExtJs学习笔记(24)Drag/Drop拖动功能
    wap开发体会
    关于”System.ServiceModel.Activation.WebServiceHostFactory“与"<webHttp/>"以及RestFul/启用了Ajax的WCF服务
    验证码无刷新更换
  • 原文地址:https://www.cnblogs.com/gringe/p/4908765.html
Copyright © 2011-2022 走看看