一、前言

        继续上一章的内容,继续今天的Js学习。

二、内容

        事件处理程序

事件就是用户或浏览器自身执行的某种动作。而响应某个事件的函数就叫做事件处理程序

//HTML事件处理程序
例:

<input type="button" value="Click Me" onclick="try{showMessage();}catch(ex){}"> 缺点:
1.时差问题
2.扩展事件处理程序的作用域链在不同浏览器中会导致不同结果
3.HTML与JavaScript代码紧密耦合 //JavaScript事件处理程序
addEventListener()指定事件处理程序
removeEventListener()删除事件处理程序 三个参数:
1.要处理的事件名
2.作为事件处理程序的函数
3.一个布尔值 —— true是在捕获阶段(由外向内)调用;false是在冒泡阶段(由内向外)调用,通常使用false! 例:
var btn = document.getElementById("myBtn");
btn.addEventListener("click",function(){alert(this.id);},false); //如何使用removeEventListener()
var btn = document.getElementById("myBtn");
var handler = function(){alert(this.id);}; btn.addEventListener("click",handler,false);
......
btn.removeEventListener("click",handler,false);

         事件对象

在触发DOM上的某个事件时,会产生一个事件对象event,这个对象中包含所有与事件有关的信息。

例:
var btn = document.getElementById("myBtn");
btn.onclick = function(event){alert(event.type)};
//或
btn.addEventListener("click",function(event){alert(event.type);},false);

事件类型

.UI事件
1.1 load —— 完全加载
1.2 unload —— 完全卸载
1.3 abort —— 停止下载过程中,嵌入的内容没有加载完
1.4 error —— js错误
1.5 select —— 选择文本框的一个或多个
1.6 resize —— 窗口大小发生变化
1.7 scroll —— 滚动条滚动
.焦点事件
2.1 blur —— 元素失去焦点(不冒泡)
2.2 focus —— 元素获得焦点(不冒泡)
2.3 focusin —— 元素获得焦点(冒泡)
2.4 focusout —— 元素失去焦点
.鼠标事件
3.1 click —— 单击事件
3.2 dbclick —— 双击事件
3.3 mousedown —— 按下鼠标任意按钮
3.4 mouseenter —— 光标从元素外部首次移动到该元素范围之内
3.5 mouseleave —— 在元素上方的光标移动到元素范围之外
3.6 mousemove —— 鼠标指针在元素内部移动时重复触发
3.7 mouseout —— 元素上方鼠标指针移入另一个元素
3.8 mouseover —— 鼠标指针位于一个元素外部,用户首次移入另一个元素
3.9 mouseup —— 释放鼠标按钮
.滚轮事件
4.1 mousewheel —— 鼠标滚轮事件
.文本事件
5.1 textInput —— 用户在可编辑区域中输入字符触发,用意是将文本显示给用户之前更容易拦截文本
.键盘事件
6.1 keydown —— 按下任意键,按住不放会重复触发
6.2 keypress —— 按下字符键,按住不放会重复触发
6.3 keyup —— 释放键盘键
.合成事件 
.变动事件 .HTML5事件
9.1 contextmenu —— 通过单击鼠标右键可以调出上下文菜单
9.2 beforeunload —— 在浏览器卸载页面之前触发,可以通过它来取消卸载并继续使用原有页面
9.3 DOMContentLoaded —— 形成完整的DOM树之后就会触发,不理会css,js资源是否下载完毕,用户可以尽早与页面交互
9.4 pageshow 与 pagehide —— 该事件处理程序必须要添加到window对象
9.5 hashchangde —— 在URL参数列表(#后的所有字符串)发送变化时通知,必须要添加到window对

【JavaScript】事件的更多相关文章

  1. JavaScript事件代理和委托(Delegation)

    JavaScript事件代理 首先介绍一下JavaScript的事件代理.事件代理在JS世界中一个非常有用也很有趣的功能.当我们需要对很多元素添加事件的时候,可以通过将事件添加到它们的父节点而将事件委 ...

  2. JavaScript事件概览

    JavaScript事件 JavaScript是单线程,在同一个时间点,不可能同时运行两个"控制线程". 事件句柄和事件对象 1.注册事件句柄 标准和非标准 var button= ...

  3. 【移动端兼容问题研究】javascript事件机制详解(涉及移动兼容)

    前言 这篇博客有点长,如果你是高手请您读一读,能对其中的一些误点提出来,以免我误人子弟,并且帮助我提高 如果你是javascript菜鸟,建议您好好读一读,真的理解下来会有不一样的收获 在下才疏学浅, ...

  4. JavaScript 事件

    事件 概念:事件是可以被 JavaScript 侦测到的行为. JavaScript 使我们有能力创建动态页面.事件是可以被 JavaScript 侦测到的行为. 网页中的每个元素都可以产生某些可以触 ...

  5. JavaScript事件详解-jQuery的事件实现(三)

    正文 本文所涉及到的jQuery版本是3.1.1,可以在压缩包中找到event模块.该篇算是阅读笔记,jQuery代码太长.... Dean Edward的addEvent.js 相对于zepto的e ...

  6. JavaScript事件详解-Zepto的事件实现(二)【新增fastclick阅读笔记】

    正文 作者打字速度实在不咋地,源码部分就用图片代替了,都是截图,本文讲解的Zepto版本是1.2.0,在该版本中的event模块与1.1.6基本一致.此文的fastclick理解上在看过博客园各个大神 ...

  7. 总结JavaScript事件机制

    JavaScript事件模型 在各种浏览器中存在三种事件模型: 原始事件模型 , DOM2事件模型 , IE事件模型. 其中原始的事件模型被所有浏览器所支持,而DOM2中所定义的事件模型目前被除了IE ...

  8. 解析Javascript事件冒泡机制

    本资源引自: 解析Javascript事件冒泡机制 - 我的程序人生 - 博客频道 - CSDN.NET http://blog.csdn.net/luanlouis/article/details/ ...

  9. JavaScript事件流原理解析

    一.为什么会有这一篇的文章 国庆前几天由于任务比较重,要赶在国庆前把一个进度的任务开发完成,所以也就有点赶,但是却遇到了一个比较奇怪的Bug,导致了任务比预计的延迟了几个小时,对此深表遗憾,所以利用国 ...

  10. Javascript事件机制兼容性解决方案

    本文的解决方案可以用于Javascript native对象和宿主对象(dom元素),通过以下的方式来绑定和触发事件: 或者 var input = document.getElementsByTag ...

随机推荐

  1. asp.net core 2.2 根据PC端和移动端自动显示不同视图而不改变url地址

    1.添加HttpRequest扩展方法 public static class RequestExtensions { //regex from http://detectmobilebrowsers ...

  2. 在 Symfony Command中自定义脚本把Excel数据导入到数据库中

    // 注:只是在此做下记录,有兴趣的可以参考,不做实际教程文档 <?php/** * Created by IntelliJ IDEA. * User: davis * Date: 2019-0 ...

  3. Sqlite数据多表联合update

    其实在Mysql中,多表联合update不是什么难事. 语法: 1 UPDATE table_references SET col_name1=expr1 [, col_name2=expr2 ... ...

  4. 现有新的iOS更新可用,请从iOS12 beta版进行更新.解决方案

    问题描述: ios系统一直弹出“现有新的iOS更新可用,请从iOS12 beta版进行更新”的提示,很烦的. 应该只出现在安装测试版ios12的手机上. 解决方案: 删除描述文件无法解决. 有网友机制 ...

  5. 169.求众数 leetcode Javascript

    给定一个大小为 n 的数组,找到其中的众数.众数是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素. 你可以假设数组是非空的,并且给定的数组总是存在众数. 示例 1: 输入: [3,2,3] 输出: 3 ...

  6. JavaScript学习笔记(三)——对象

    第四章 理解对象 1 说明 对象的状态:属性,行为:方法: 对象定义放在花括号内: 用冒号分隔属性名和属性值: 用逗号分隔属性名和属性值对,包括方法: 最后一个属性值后面不加逗号: 属性名可以是任何字 ...

  7. Gradle初使用

    我以前一直使用Maven来构建工程,这两天突然发现gradle也非常好用,记录一下自己使用gradle的过程. Gradle的下载与配置 本次选择下载的是gradle3.5版本,没选最新的gradle ...

  8. 事后诸葛亮--Alpha版本总结

    目录 设想和目标 计划 资源 变更管理 设计/实现 测试/发布 团队的角色,管理,合作 总结: 本小组和其他组的评分 分工和贡献分 全组讨论的照片 问题 第一组提问回答:爸爸饿了队 第二组提问回答:拖 ...

  9. DB2 日志

    跟Oracle类似DB2也分为两个模式,日志循环vs归档日志,也就是非归档和归档模式,下面对这两种模式做简单的介绍. 日志循环 日志循环是默认方式,也就是非归档模式,这种模式只支持backup off ...

  10. LAMP 系统服务搭建过程详解

    LAMP 架构在企业里用得非常广泛,目前很多电商公司.游戏公司.移动互联网公司大多都采用这种架构.LAMP指的是Linux.Apache.MySQL.PHP.下面记录了 LAMP 架构系统服务的搭建过 ...