注册事件

给元素添加事件,被称为注册事件或者绑定事件。

注册事件有两种方式:传统方法和方法监听注册

传统方法

传统注册方式都是以on开头的事件,例如onclick

具有唯一性,对于同一个元素同一个实践,只能设置一个处理函数,最后注册的处理函数会覆盖前面注册的处理函数

方法监听注册

W3C推荐方法

使用addEventListener()方法

IE9之前的浏览器不支持,可以使用attachEvent()代替(attachEvent()方法非标准)

对于同一个元素同一个事件可以设置多个监听器

使用:

元素名.addEventListener(type,listener[,useCapture])

type是事件类型字符串,比如click、mouseover,注意这里没有on

listener:事件处理函数,事件发生时,会调用该监听函数

useCapture:可选参数,是一个布尔值,默认false,为true则处于捕获阶段,为false则处于冒泡阶段

!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><button>点击</button><script>var btn=document.querySelector('button');// 方法监听注册事件// 点击按钮,弹出弹窗btn.addEventListener('click',function(){alert('hello');})</script></body>
</html>

删除事件

对于传统方式注册的事件,使用元素名.事件名=null就可以实现,例如:element.οnclick=null

对于方法监听注册,可以通过元素名.removeEventListener(type,listener[,useCapture])实现

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title></head><body><button>点击</button><script>var btn=document.querySelector('button');// 第一次点击按钮时,弹出弹窗btn.addEventListener('click',fn);function fn(){alert('hello');btn.removeEventListener('click',fn);}</script></body>
</html>

DOM事件流

事件流描述的是从页面中接收事件的顺序

事件发生时会在元素节点之间按照特定的顺序传播,这个传播过程就是DOM事件流

分为三个阶段:捕获阶段、当前目标阶段、冒泡阶段

事件对象

事件对象就是写在侦听函数的小括号里面的,可以当形参。

是系统自动创建的,不需要我们创建,但如果要使用,必须在小括号中写event或自己命名

事件对象是我们事件的一系列相关数据的集合,和事件相关

IE6、7、8使用window.event

常见属性和方法:

IE6、7、8中阻止冒泡使用event.cancelBubble=true

事件委托

事件委托:不给每个子节点单独设置事件监听器,而是将事件监听器设置在父节点之上,然后利用冒泡原理影响每个子节点

只操作了一次DOM,效率更高

常用的鼠标事件

禁止鼠标右键显示菜单

//contextmenu主要控制应该何时显示上下文菜单
document.addEventListener('contextmenu',function(e){e.preventDefault(); //阻止默认事件
}

禁止鼠标选中

document.addEventListener('selectstart',function(e){e.preventDefault(); //阻止默认事件
}

鼠标事件对象

MouseEvent

图片跟随鼠标

<!DOCTYPE html>
<html><head><meta charset="utf-8"><title></title><style>img{position: absolute;display: none;width: 10px;height: 10px;}</style></head><body><img src="img/i1.jpg"  /><script>var img=document.querySelector('img')document.onmousemove=function(e){var x=e.clientX;var y=e.clientY;console.log(x);console.log(y);img.style.top=y+'px';img.style.left=x+'px';img.style.display='block';}</script></body>
</html>

常用键盘事件

如果使用addEventListener,前面不需要加on

三个事件的执行顺序:onkeydown onkeypress onkeyup

键盘事件对象

类似鼠标事件对象

注意keyup和keydown不区分大小写,keypress区分大小写

JavaScript学习9相关推荐

  1. Javascript学习7 - 脚本化浏览器窗口

    原文:Javascript学习7 - 脚本化浏览器窗口 本节讨论了文档对象模型.客户端Javascript下Window中的各项属性,包括计时器.Location对象.Histroy对象.窗口.浏览器 ...

  2. Java程序猿的JavaScript学习笔记(12——jQuery-扩展选择器)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  3. 《Javascript入门学习全集》 Javascript学习第二季(实战4)

    Javascript学习第二季(实战4)   上章的例子虽然实现了功能,也做了相应的判断,也符合标准了.但还有一个问题就是: Choose an image. 在html中只是为了图片切换 而做的,而 ...

  4. Java程序猿的JavaScript学习笔记(汇总文件夹)

    最终完结了,历时半个月. 内容包含: JavaScript面向对象特性分析,JavaScript高手必经之路. jQuery源代码级解析. jQuery EasyUI源代码级解析. Java程序猿的J ...

  5. JavaScript学习知识点归纳

    JavaScript学习包括几大方面: 1.基础语法 2.JavaScript核心对象 3.DOM操作 4.BOM操作 5.正则表达式 6.AJAX 7.面向对象编程 以下依次为各版块相关内容==&g ...

  6. JavaScript学习笔记(五)

    JavaScript学习笔记(五) ①Array类 本地对象 ②Date类 ①Global对象 对象的类型   内置对象 ②Math对象 宿主对象 今天继续学习JS中的对象,昨天内置对象Global对 ...

  7. JavaScript学习笔记(备忘录)

    JavaScript学习笔记(备忘录) ===运算符 判断数值和类型是否相等.如: console.log('s'==='s') //输出trueconsole.log('1'===1) //输出fa ...

  8. Java程序猿的JavaScript学习笔记(10—— jQuery-在“类”层面扩展)

    计划按例如以下顺序完毕这篇笔记: Java程序猿的JavaScript学习笔记(1--理念) Java程序猿的JavaScript学习笔记(2--属性复制和继承) Java程序猿的JavaScript ...

  9. JavaScript学习笔记(十)——学习心得与经验小结

    JavaScript学习笔记(十)--学习心得与经验小结 目前我先列好提纲,利用每晚和周末的闲暇时间,将逐步写完 ^_^ 转载于:https://www.cnblogs.com/mixer/archi ...

  10. JavaScript 学习笔记(1)

    1.     何为 Jscript JScript 是一种解释型的.基于对象的脚本语言. 局限性: 1)        不能使用该语言来编写独立运行的应用程序 2)        没有对读写文件的内置 ...

最新文章

  1. Unity3D_(游戏)贪吃蛇
  2. python 图像无缝拼接,OpenCV Python 系列教程3 - Core 组件
  3. 常见的权限访问控制模型
  4. python中、文件最重要的功能是( )和接收数据_Python基础语法14个知识点大串讲
  5. 由Handle转换为控件
  6. iOS中,在类的源文件(.m)中,@interface部分的作用?
  7. 揭秘2018图灵奖评选:Jeff Dean李开复和Lecun写信推荐Hinton
  8. https连接加载http资源
  9. turbo编译加强java_给你无限可能,创造更多价值! TurboShop V3.5 版本发布
  10. MySQL原理与实践(六):自增主键的使用
  11. Excel从文本中提取数值
  12. 什么是网络攻击?网络攻击手段有哪些?
  13. 【Windows】常用盗版软件的替代免费软件列表
  14. 二叉树、平衡二叉树、红黑树、B-树、B+树、B*树、T树之间的详解和比较
  15. AcWing 2041. 干草堆
  16. Linux 命令详解
  17. 人力外派和猎头的区别是什么?哪个行业更赚钱?
  18. 剑指offer-二叉树(python)
  19. git worktree 的使用
  20. protect java_java中的protect用法介绍

热门文章

  1. [自用]js 打印网页中指定的部分内容和范围
  2. iOS iOS应用PUSH功能的实现
  3. JAVA线程 -- Interrupt
  4. 服务新市民 共享新生活 中荷人寿山东省分公司开展新市民金融服务宣传活动
  5. PHP程序设计-实验1-简单PHP代码入门
  6. Spring 使用@Import注入Bean的三种方式
  7. 从U盘安装centos7(史上最简单的终极解决方案)
  8. c语言图书管理系统(详细个人理解)
  9. 现在就开始创业的五个理由
  10. 一院与哈工大大数据集团开展座谈交流