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

  (一)事件:

    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. 从0开始的Python学习010return语句&DocStrings

    return语句 return语句用来从一个函数中 返回 即跳出函数.当然也可以从函数中返回一个值. #return 语句从一个函数返回 即跳出函数.我们也可选从函数返回一个值 def maximum ...

  2. 【转贴】一次 JDBC 与 MySQL 因 “CST” 时区协商误解导致时间差了 14 或 13 小时的排错经历

    原文:https://juejin.im/post/5902e087da2f60005df05c3d ------------------------------------------------- ...

  3. SQL学习笔记---常用命令

    常用命令 变量 1.声明 declare @变量名 类型,… 2.赋值 1.同时赋值多个变量(可以结合查询) select @变量名=表达式1,表达式2 2.单个赋值(推荐) set @变量名=表达式 ...

  4. mas录屏,带系统声音和麦克风声音

    自带的QuickTime + Soundflower 可完美解决,同时录系统的声音和mic声音,也可以只录系统声音. 安装Soundflower 在应用程序 -> 实用工具,里面找到“音频 MI ...

  5. mysql 的远程链接字符

    默认情况下,mysql只允许本地登录,如果要开启远程连接,则需要修改/etc/mysql/my.conf文件. 一.修改/etc/mysql/my.conf找到bind-address = 127.0 ...

  6. ansible学习(二)

    什么是YAML? YAML是一种标记语言.适合用来表达层次结构式的数据结构. YAML的基本组件:清单(短杠——空白字符)和散列表(短杠+空白字符分隔key:value对). Playbook的核心元 ...

  7. Extjs 改变grid行的背景颜色

    ## Ext grid 改变行背景色 Ext.util.CSS.createStyleSheet('.ts {background:#9a9a9bc2;}');//单独创建css样式 { xtype: ...

  8. 做为一个Python程序员的基本素养

    今天在学习的过程中,明白了一些不是Python标准所必须要做的事情,二是做为一个合格的Python程序员应该所遵从的一些规范 分享给大家,有不足的地方请大家指正,此下是我学习的一点心得: 1.在给变量 ...

  9. 线程池工厂方法newScheduledThreadPool(),计划任务

    package com.thread.test.ThreadPool; import java.util.concurrent.Executors; import java.util.concurre ...

  10. springMVC第二天——高级参数绑定与其它特性

    大纲摘要: 1.高级参数绑定 a) 数组类型的参数绑定 b) List类型的绑定 2.@RequestMapping注解的使用 3.Controller方法返回值 4.Springmvc中异常处理 5 ...