DOM事件

1.事件入门

a.认识JavaScript事件

Js是一门事件驱动的语言。任何地方其实都带着事件。如能明显感受到的:

1、鼠标点击

2、鼠标悬停

3、鼠标挪开

4、键盘敲击

5、表单的提交

6、滚动

b.事件三要素(事件源、事件、监听器)

1、任何一个事件,都必须包括三要素:

2、事件源,在哪个元素上发生的

3、事件,具体发生了什么事件,点击,悬停,键盘敲击

4、监听器,当事件发生时,我做了什么,在js中,通常用一个函数来表示

注意:

事件源一般指的是一个元素(宿主对象)

在事件里,一般的形式 是  onclick  onmouserover  其中真正的事件是  click  mouserover    on其实只是一个修饰,表示要添加事件的意思;

监听器是一个匿名函数,但是这个函数不需要我们去调用,会有js引擎去调用,但是调用是有条件的,必须要触发添加好的事件,才会去调用这个函数;

2.事件绑定

1、HTML事件处理程序

2、DOM 0级事件处理程序

3、DOM 2级事件处理程序

4、IE事件处理程序

(1).HTML事件绑定方式

(2).DOM 0级事件处理程序

(3).DOM 2级事件处理程序

添加事件的方法

addEventListener 

用法:  dom.addEventListener(事件类型,匿名函数,false); 

移除事件的方法

removeEventListener

用法:dom.removeEventListener(事件类型,已经添加过的监听器,false);

(4).IE事件处理程序 

Ie5、ie6、Ie7、ie8不支持addEventListener和removeListener这两个方法

attachEvent 添加事件

用法: dom.attachEvent(事件类型,监听器);

detachEvent 移除事件

用法:dom.detachEvent(事件类型,已经添加过的监听器);

3.事件流及事件传播

在页面中,如果对某一个元素发生了事件,那么这个元素的所有祖先级都会触发相同的事件;

事件传递:某个事件会从当前点击的这个元素和它的最祖先的元素(document)之间进行传递;

传递是有顺序的,顺序只有两种   

1.从内往外传,叫冒泡

1.从外往内传,叫捕获

哪些情况下会发生冒泡: 

DOM0级添加的方式都是冒泡的

DOM2级的方式,主要看第三个参数,false表示的是冒泡,true表示的捕获;

首先,确定传递路径(从触发事件的元素到document),找到捕获的为一组,找到冒泡的为一组,  先走捕获这一条(从外往内),在走冒泡这一条(从内往外)

注意:

addEventListener的第三个参数决定了是冒泡还是捕获

Ie的事件处理程序决定了ie只有冒泡,没有捕获;

4.事件类型

(1).焦点事件

focus:获取焦点

blur:失去焦点

使用范围:input、a、select

使用比较多的就是input。

focus  指的是输入框获得输入光标的时候,会触发一个事件;

blur 指的是输入框失去焦点,不能输入的时候,会触发

(2).鼠标事件

click,单击

mouseovermouseout,鼠标悬停,鼠标离开,使用最多

mousedown、mousemove、mouseup,鼠标按下去,鼠标移动,鼠标松开

点击:只要有鼠标左键按下,并且抬起来,构成一个点击事件

Mouserdown  :鼠标左键按下事件,只要按下就会触发

Mouseup :鼠标左键抬起事件,只要抬起就会触发

一般来说,点击事件里边包含了 鼠标按下事件和鼠标抬起事件;

注意:click会在mousedown和mouseup之后执行,而且,要时刻注意,事件发生的事件源;

场景:在网页上点击一个按钮的时候,如果只是鼠标按下,但是之后鼠标离开了这个元素,再抬起鼠标,这个时候,单击事件和抬起事件都不会触发;

(3).键盘事件

keydown和keypress:键按下去

keyup:键松开

键盘事件,可以绑定到具体的某一个元素,也可以绑定到document上。

Keydown和keypress都是表示按下的,但是有细微区别:

keydown,可以响应所有键的按下

Keypress,只能响应字符键(字母、数字、符号),控制键和功能键是不响应的。

如果按住键不放的话,那么就重复的执行keydown和keypress,keyup只有在按钮抬起的那一刻才会执行

(4).表单事件

submit,提交事件,在点击submit按钮的时候触发的事件

reset,重置事件,在点击reset按钮的时候触发的事件(实际使用比较少)

change事件,是指内容改变时触发的事件,通常应用在input框和select

input事件,是指只要键盘上的键动了,就会触发;

Submit事件的用法

Submit事件的事件源是这个按钮所在的form元素;

事件类型是  onsubmit

这是表单提交时候所触发的事件,并不是按钮的点击事件;

Reset事件的事件源也是这个按钮所在的form标签

事件类型  onreset

Input事件的事件源是可以改变内容的表单元素

事件类型  oninput

input事件在输入的时候,会持续触发,基本就是敲一个按键,触发一次;

(5).ui事件

Ui:用户界面

load、unload、beforeunload

select

scroll

resize

load这个事件它的事件源是window,表示的是页面文档和各种资源都加载完毕之后,才会执行;

window.onload=function(){}

一般js的引入在body的最底部,是为了让dom元素都加载完之后,在执行js,如果把js引入在head标签内,这个时候可以用onload这个事件;

unload  页面卸载的时候会触发,但是很难捕捉到,

unbeforeload  页面卸载之前会触发。

Select事件的事件源是input框

scroll事件指的是页面中的滚动条发生滚动会持续触发的事件;事件源是window

resize事件值的是浏览器窗口的大小发生改变,会持续触发这个事件,事件源是window;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 211,265评论 6 490
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,078评论 2 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 156,852评论 0 347
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,408评论 1 283
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,445评论 5 384
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,772评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,921评论 3 406
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,688评论 0 266
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,130评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,467评论 2 325
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,617评论 1 340
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,276评论 4 329
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,882评论 3 312
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,740评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,967评论 1 265
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,315评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,486评论 2 348

推荐阅读更多精彩内容

  •   JavaScript 与 HTML 之间的交互是通过事件实现的。   事件,就是文档或浏览器窗口中发生的一些特...
    霜天晓阅读 3,474评论 1 11
  • 事件流 JavaScript与HTML之间的交互是通过事件实现的。事件,就是文档或浏览器窗口中发生的一些特定的交互...
    DHFE阅读 824评论 0 3
  • (续jQuery基础(1)) 第5章 DOM节点的复制与替换 (1)DOM拷贝clone() 克隆节点是DOM的常...
    凛0_0阅读 1,324评论 0 8
  • JavaScript和HTML的交互是通过事件实现的。JavaScript采用异步事件驱动编程模型,当文档、浏览器...
    深沉的简单阅读 315评论 0 0
  • 文中涉及大量内容来自于PPK的博客 现代前端开发应该要遵守: html展示文档内容,css渲染页面效果,javas...
    江枫阅读 763评论 0 8