一、什么是事件对象(黑匣子)

  (一)事件:

    onclick

    ondblclick

  (二)当绑定对象的事件被触发时,所发生的所有详细信息都会保存在一个地方,这个地方称为事件对象

    

二、如何获取事件对象

  (一)标准浏览器:给事件触发函数传递的第一个参数;

  (二)IE浏览器:全局对象的属性window.event;

  (三)兼容:evt = evt || window.event

        var e = evt ||window.event

三、如何获取鼠标的编码值

  (一)event.button

    标准浏览器:左键:0;滚轮键:1;右键:2

    IE9以下:左键:1;滚轮键:4;右键:2

    兼容:

    function getButton(evt){

      var e = evt || window.event;

      if(evt){

        return e.button;

      }else if(window.event){

        switch(e.button){

          case 1:return 0;

          case 2:return 1;

          case 3:return 2;

        }

      }

    }

四、如何获取鼠标的坐标值

  (一)相对坐标值:event.offsetX  event.offsetY;相对鼠标所在对象上的坐标值

  (二)绝对坐标值(页面坐标值):event.pageX  event.pageY;鼠标到页面的坐标值

  (三)可视区坐标值:event.clientX  event.clientY;鼠标到页面中可视区域的坐标值

  (四)屏幕坐标值:event.screenX  event.screenY;鼠标到电脑屏幕的坐标值

  思考:如何实现鼠标跟随效果

五、什么是事件流,什么是事件冒泡

  (一)事件流:指事件的流向,有三个阶段:事件捕获/事件目标/事件冒泡

  (二)事件捕获:由外而内,由祖先元素向子孙元素一次传递事件的过程

  (三)事件冒泡:由内而外,由子孙元素向祖先元素一次传递事件的过程

  注:浏览器默认开启的是事件冒泡,IE与欧朋浏览器不支持事件捕获

  (四)如何阻止事件冒泡

    1.标准浏览器:event.stopPropagation()

    2.IE:eventcancelBubble = true;

    兼容:event.stopPropagation ? event.stopPropagation() : event.cancelBubble = true;

六、如何获取键盘的编码值

  (一)event.keyCode event.charCode event.which

     onkeydown/onkeyup : 监听是整个键盘.

     event.keyCode : 获取整个键盘的编码值,字母只获取大写的编码值.,

     onkeypress : 监听除功能键外的键盘值

  兼容 : event.keyCode || event.charCode || event.which

    火狐:

     event.keyCode : 0,

     event.charCode : 大小写字母的编码值,

     event.which : 大小写字母的编码值,

    谷歌:

     event.keyCode : 大小写字母的编码值,

     event.charCode : 大小写字母的编码值,

     event.which : 大小写字母的编码值,

七、如何设置组合键(快捷键)

  (一)event.ctrlKey

  (二)event.shiftKey

  (三)event.altKey

JS学习笔记Day11的更多相关文章

  1. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  2. Vue.js学习笔记(2)vue-router

    vue中vue-router的使用:

  3. JS 学习笔记--9---变量-作用域-内存相关

    JS 中变量和其它语言中变量最大的区别就是,JS 是松散型语言,决定了它只是在某一个特定时间保存某一特定的值的一个名字而已.由于在定义变量的时候不需要显示规定必须保存某种类型的值,故变量的值以及保存的 ...

  4. WebGL three.js学习笔记 使用粒子系统模拟时空隧道(虫洞)

    WebGL three.js学习笔记 使用粒子系统模拟时空隧道 本例的运行结果如图: 时空隧道demo演示 Demo地址:https://nsytsqdtn.github.io/demo/sprite ...

  5. WebGL three.js学习笔记 法向量网格材质MeshNormalMaterial的介绍和创建360度全景天空盒的方法

    WebGL学习----Three.js学习笔记(5) 点击查看demo演示 Demo地址:https://nsytsqdtn.github.io/demo/360/360 简单网格材质 MeshNor ...

  6. WebGL three.js学习笔记 创建three.js代码的基本框架

    WebGL学习----Three.js学习笔记(1) webgl介绍 WebGL是一种3D绘图协议,它把JavaScript和OpenGL ES 2.0结合在一起,通过增加OpenGL ES 2.0的 ...

  7. vue.js 学习笔记3——TypeScript

    目录 vue.js 学习笔记3--TypeScript 工具 基础类型 数组 元组 枚举 字面量 接口 类类型 类类型要素 函数 函数参数 this对象和类型 重载 迭代器 Symbol.iterat ...

  8. 2019-4-29 js学习笔记

    js学习笔记一:js数据类型   1:基本数据类型       number类型(整数,小数)      String类型          boolean类型        NaN类型其实是一个nu ...

  9. 一点感悟:《Node.js学习笔记》star数突破1000+

    写作背景 笔者前年开始撰写的<Node.js学习笔记> github star 数突破了1000,算是个里程碑吧. 从第一次提交(2016.11.03)到现在,1年半过去了.突然有些感慨, ...

随机推荐

  1. Linux中ftp的常用命令

    转自:https://www.jb51.net/article/103904.htm FTP命令 ftp> ascii # 设定以ASCII方式传送文件(缺省值) ftp> bell # ...

  2. restful api与传统api的区别(方式及语法)

    示例:一个状态数据操作接口 传统模式: api/getstate.aspx- 获取状态信息api/updatestate.aspx - 更新状态信息api/deletestate.aspx - 删除该 ...

  3. Python大数据系列-01-关系数据库基本运算

    关系数据库基本运算 .tg {border-collapse:collapse;border-spacing:0;} .tg td{font-family:Arial, sans-serif;font ...

  4. 【English】20190315

    accelerate 加速 [ækˈsɛləˌret]  Our goal is to help you be more successful in your role and work togeth ...

  5. SQL瓶颈分析,以及适应最佳执行计划的探讨

    原文地址:   https://blog.csdn.net/daiqiulong2/article/details/86546446?tdsourcetag=s_pcqq_aiomsg 年纪大了,慢慢 ...

  6. offsetLeft、offsetX等

    https://blog.csdn.net/w390058785/article/details/80461845

  7. 嵌入式操作系统---打印函数(printf/sprintf)的实现

    一.打印函数简介 作用:将“给定的内容”按照“指定的格式”输出到“指定目标内”. 打印函数的基本格式: char print_buf[BUF_SIZE]; void printf(const char ...

  8. eclipse上配置svn

    eclipse里安装SVN插件,一般来说,有两种方式: 直接下载SVN插件,将其解压到eclipse的对应目录里 使用eclipse 里Help菜单的“Install New Software”,通过 ...

  9. IntelliJ IDEA 2018.3 重大升级,哪些功能打动了你?

    前言 2018.11.28 IntelliJ IDEA 2018.3 正式版发布.对于一个忠实爱好者,迫不及待的我下载了最新版本来体验下.而且 IDEA 今年的第三次重大更新提供了不容错过的显著功能! ...

  10. 一人撸PaaS之“应用”

    [什么是“应用”] 应用,如果按名词理解就是类似于可以使用的功能,比如一个App应用.事实上,一个应用包含了大量的交互功能以丰富我们的日常学习和生活. 我们这里的应用指的是一系列功能的集合,可以理解为 ...