12. 事件

1. 什么是事件? 

        是用户或浏览器自身执行的某种动作,如onclick,load和mouseover都是事件的名字

        事件是javaScript和DOM之间交互的桥梁。

2. 一个事件由什么东西组成?【三要素】

        触发谁的事件: 事件源,产生动作的对象,给谁添加动作

        触发什么事件: 事件类型,这个是个啥动作

        触发以后做什么:事件处理函数,这个的动作的目的

3.  再啰嗦一下 : 事件的三要素【事件源、事件、事件驱动程序】

4.  event  【event对象,也被称为事件对象】

        事件对象:存在兼容问题: e  =  e  ||  window.event

5.  DOM  0级事件

        DOM0级事件,表示接下来的内容是DOM中最基础的事件

       ^ _ ^ 获取元素节点(HTML标签)的方法
方法描述
document.getElementById(id)通过元素id来获取DOM对象
document.getElementsByTagName(HTML标签)通过标签名来获取一个或多个DOM对象
document.getElementByClassName(class)通过类名来获取一个或多个DOM对象
document.getElementByName(name)通过Name获取一个或多个DOM对象
document.querySelector(css选择器)        通过CSS选择器选择一个元素
document.querySelectorAll(css选择器)通过CSS选择器选择多个元素
    ^ _ ^  获取HTML值
方法描述
元素节点.innerText获取 HTML 元素的 innerText
元素节点.innerHTML获取 HTML 元素的 innerHTML
元素节点.属性获取 HTML 元素的属性值
元素节点.getAttribute(attribute)获取 HTML 元素的属性值
元素节点.style.样式获取 HTML 元素的行内样式值
看看有哪些事件:
常用事件
onblur失焦事件
onfocus得焦事件
onload加载成功事件
error加载失败事件
resize大小改变事件
 
鼠标常用事件
onclick点击事件
ondbclick双击事件
onmousedown鼠标按下事件
onmouseup鼠标抬起事件
onmouseenter鼠标移入事件
onmouseleave鼠标移出事件
onmousemove鼠标移动事件

       

键盘常用事件
onkeydown键盘按下
onkeyup键盘抬起
onkeypress键盘按过【按下时触发】

5.1.  DOM 0级事件

        ele.onclick = function(){ }

        DOM 0级缺点: 只能管一个事件

        例子:

//  0级DOM分为2个: 
//  一是在标签内写 onclick 事件
//  二是在JS写onclick = function ( ) { } 函数

1. <input id="myButton" type="button" value="Press Me" οnclick="alert('thanks');" >

2. 
    document.getElementById("myButton").onclick = function () {
    alert('thanks');
   }

        删除DOM 0级事件处理程序,只要将对应事件属性设为 null 即可。

5.2 事件处理

        事件并不关键,关键的是处理事件

        我们通常使用的按钮对应事件来绑定函数来进行事件的处理,当条件被触发时【如按钮被点击关闭】其对应的函数会被调用,执行函数内的语句。

        DOM事件是将 HTML 与 JS 代码分开,这样便于维护。

6. DOM 2级事件

        一般写法 标准 浏览器:

        ele.addEventListener (' click ' , function(){},false)

and

        IE 浏览器 : ele.attachEvent(' onclick ' , function(){})

都有三个参数:  事件类型、事件处理函数、是否捕获:布尔值( 默认为false )

如果是 true 则表示在捕获阶段调用,为 false 表示在冒泡阶段调用

        DOM2级只有一个:监听方法;

        原生有两个方法可以用来添加和移除事件处理程序:addEventListener()和 removeEventListener()

  • addEventListener():可以为元素添加多个事件处理程序,触发时会按照添加顺序依次调用。
  • removeEventListener():不能移除匿名添加的函数

6.1   DOM0 和 DOM2的共性与个性

        1.  DOM 0级 与 DOM 2级的共同优点:

        能添加多个事件处理程序,按顺序执行,不过在HTML事件处理程序中无法做到

        

      2.  区别:

        如果定义了两个dom0级事件,dom0级事件会覆盖

        dom2不会覆盖,会依次执行

        dom0和dom2可以共存,不互相覆盖,但是dom0之间依然会覆盖

        DOM0事件:可以同时绑定多个不同的事件、不能同时绑定多个相同事件,会覆盖,只执行最后一个的函数。

        DOM2级事件:同时绑定多个事件【相同的也行不同的也行】,然后顺序执行,不会覆盖,缺点就是不具有跨浏览器优势,需要考虑兼容。


 

        

DOM2级 兼容封装函数


        function addEventListener( obj , type , fn , bool ){

                bool = bool || false; 左为假,返回右边,左真返左

                if(obj.addEventLister){

                        obj.addEventListener(type,fn,bool);

                }else if( obj.attachEvent ){

                        obj.attachEvent ( ' on ' + type , fn );

                }

        } 

/ /  eg: attEventListener( btn, ' click ' , fn1)

         

// 这个看不懂没关系,需要慢慢消化,比较抽象,找机会多练习

7. 事件对象的认识

                什么是事件对象? 【类似于飞机上的黑匣子、汽车上的行车记录仪、教室中的摄像头】

               当绑定事件的对象,在触发事件时,所发生的事情记录在一个地方,而这个地方称为事件对象

        如何获取事件对象?

                1. 标准浏览器获取事件对象的方式:触发事件后,会自动给事件处理程序传递一个参数,这个参数就是事件对象。

                2. IE浏览器获取事件对象的方式:window.event

                3. 兼容:

                        function getEvent(){

                                return argument [ 0 ]  | |  window.event ;  

                }

        事件对象内鼠标相关信息

                鼠标的相对坐标值:【鼠标相对于所在对象上的坐标值】

                        event.offsetX  /  event.offsetY

                鼠标的可视区坐标值:【当前鼠标出发点距离当前窗口左上角的 X / Y 坐标】

                        event.clientX  /  event.clientY

                鼠标的绝对坐标值:【当前鼠标出发点距离 BODY 左上角的 X / Y坐标(IE9 一下没有这两个属性)】

       event.pageX  /  event.pageY

           // 兼容处理:

 event.clientX + ( document.documentElement.scrollLeft  ||  document.body.scrollLeft )

 event.clientY  +  ( document.documentElement.scrollTop ||  document.body.scrollTop )

        事件对象内键盘相关信息

                1. onkeydown  /   onkeyup : event.keyCode

                        监听整个键盘,其中字母键只返回大写的编码值。

                2. onkeypress : event.keyCode  ||  event.charCode  ||  event.which

                        监听编辑键区,字母键返回大小的编码值

                        低版本浏览器中有可能监听功能键区、回车键出现过10

                        
                     

                           // 兼容:

                        // 获取键盘编码值的兼容

                        function getKeyCode(evt){

                                var e = evt || window.event;

                                return e.keyCode  ||  e.charCode  ||  e.which;

                        }

                3.  altKey  /  shiftKey  /  ctrlKey  /  metaKey

                        1. event.metaKey : 返回一个布尔值标识meta键(windows键)是否被按键并保持

                        返回 true 表示 meta 键按下并保持

                        返回 false 表示没有满足 meta 键按下并保持的情况

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值