1.理解事件(2点)
  • 事件行为本身:没有给事件绑定方法事件也是一直存在的,当触发行为的时候,也对触发对应的行为,只不过由于没有绑定事件,导致没有任何事件发生;
  • 事件绑定:给元素绑定一个方法;触发行为,执行方法;

 2.DOM事件
  • DOM0级事件:1️⃣(onclick)属于元素的私有属性;2️⃣使用DOM0级方法指定的事件处理程序被认为是元素的方法,这也就解释为什么事件处理程序的this指向当前元素(this的六点申明);3️⃣事件处理程序只会在事件冒泡阶段处理;4️⃣优势:简单;跨浏览器;5️⃣删除事件:设置为null;btn.onclick=null;6️⃣一个元素只能绑定一个同一类型的行为,否则后面的会覆盖前面的行为。
  • DOM1:没有升级事件相关的方法;
  • DOM2级事件:1️⃣属于公有方法,在eventTarget这个类的原型上—>所有的DOM节点都包含这两种方法:addEventListener和removeEventlistener;2️⃣三个参数:(事件名,回调函数,布尔值);布尔值:true—>捕获阶段调用回调函数;false—>冒泡阶段调用回调函数;3️⃣addEventListener和removeEventlistener传入的回调函数必须相同,不能使用匿名函数;4️⃣一般将事件添加到冒泡阶段,这样可以最大限度的兼容浏览器。5️⃣同一个元素可以绑定多个统一行为;

3.事件对象
 *****执行某一行为时,不仅执行了绑定方法,而且浏览器还会默认的给这个方法传递一个参数,这个参数就是—>event,事件对象。
事件对象的特点:
1️⃣对象数据类型,包含有很多的属性名和属性值,用来记录行为的相关信息;
2️⃣MouseEvent——UIEvent——Event——Object  原型
3️⃣MouseEvent记录的是页面中唯一一个鼠标每次触发的相关信息,和到底在哪个元素上触发没有关系。

4.事件对象的兼容性问题
  • 事件对象本身的兼容性问题:e=e||window.event;
  • e.type:当前行为类型,兼容;
  • e.clientX/Y:距离可视窗口左上角x,y值,兼容;
  • e.pageX/Y:距离body(第一屏)左上角x,y值,IE678不兼容;
e.pageX=(document.documentElement.scrollLeft||document.body.scrollLeft)+ e.clientX;
  • e.target:事件源,当前行为触发元素,存储的就是那个元素IE678不兼容,e.target=e.target||e.srcElement;
  • e.preventDafault:阻止浏览器的默认行为,IE678不兼容;e.preventDafault?e.preventDafault:e.returnvalue=false;
  • e.stopPropagation:阻止事件冒泡传播,IE678不兼容;e.stopPropagation?e.stopPropagation:e.cancelBubble=true;

5.事件的传播机制
  • 捕获:从外向内依次查找元素,event capturing;
  • 目标:当前述事件源本省的操作;
  • 冒泡:从内到外依次触发的相关行为,event bubbing;
  

6.常见事件类型
         1.鼠标事件
onclick onmouseover onmouseout onmouseenter onmouseleave ondbclick...
    2.系统事件
    onload onscroll onresize...
    3.表单事件
    onfocus onblur
    4.键盘事件
  onkeydown onkeyup onkeypress...
 

关于JS事件的几点总结的更多相关文章

  1. dynamic-css 动态 CSS 库,使得你可以借助 MVVM 模式动态生成和更新 css,从 js 事件和 css 选择器的苦海中脱离出来

    dynamic-css 使得你可以借助 MVVM 模式动态生成和更新 css,从而将本插件到来之前,打散.嵌套在 js 中的修改样式的代码剥离出来.比如你要做元素跟随鼠标移动,或者根据滚动条位置的变化 ...

  2. 什么是JS事件冒泡?

    什么是JS事件冒泡?: 在一个对象上触发某类事件(比如单击onclick事件),如果此对象定义了此事件的处理程序,那么此事件就会调用这个处理程序,如果没有定义此事件处理 程序或者事件返回true,那么 ...

  3. js事件技巧方法整合

    window.resizeTo(800,600); //js设置浏览器窗口尺寸 window.open (function(){ resizeTo(640,480);//设置浏览器窗口尺寸 moveT ...

  4. js事件浅析

    js中关于DOM的操作很多,因此js事件机制也就尤为重要. 事件绑定形式: 一. 内联形式 耦合度高,不利于维护 <button onclick="alert('你点击了这个按钮'); ...

  5. js 事件大全

    Js事件大全一般事件 事件 浏览器支持 描述onClick IE3|N2|O3 鼠标点击事件,多用在某个对象控制的范围内的鼠标点击onDblClick IE4|N4|O 鼠标双击事件onMouseDo ...

  6. 原生JS事件绑定方法以及jQuery绑定事件方法bind、live、on、delegate的区别

    一.原生JS事件绑定方法: 1.通过HTML属性进行事件处理函数的绑定如: <a href="#" onclick="f()"> 2.通过JavaS ...

  7. JS事件

    JS事件:  声明:为了事件对象event跨浏览器兼容: var oEvent==ev||event;      所以在下面用到 event 的地方都用 oEvent 代替  1)doucument的 ...

  8. 原生js事件和jquery事件的执行顺序问题

    场景:近日,写前端页面时候,在针对输入框input操作时,用到了jquery的插件,插件中使用了jquery的focus()和blur()方法.但是同时,又需要在插件之外再针对输入框的获取焦点和失去焦 ...

  9. 特殊js事件

    1:点击enter事件 $(document).keypress(function(e) { // 回车键事件 if(e.which == 13) { submitForm(); } }); 2:JQ ...

  10. js 事件

    事件:一般用于浏览器与用户操作进行交互 js事件的三种模型:内联模型.脚本模型.DOM2模型 内联模型:事件处理函数是HTML标签的属性 <input type="button&quo ...

随机推荐

  1. [LeetCode] Single Number III 单独的数字之三

    Given an array of numbers nums, in which exactly two elements appear only once and all the other ele ...

  2. [LeetCode] Anagrams 错位词

    Given an array of strings, return all groups of strings that are anagrams. Note: All inputs will be ...

  3. [LeetCode] Search in Rotated Sorted Array 在旋转有序数组中搜索

    Suppose a sorted array is rotated at some pivot unknown to you beforehand. (i.e., 0 1 2 4 5 6 7 migh ...

  4. 20145222《信息安全系统设计基础》Linux常用命令汇总

    学习Linux时常用命令汇总 通过Ctrl+f键可在该网页搜索到你想要的命令. Linux中命令格式为:command [options] [arguments] //中括号代表是可选的,即有些命令不 ...

  5. IT培训行业揭秘(二)

    培训机构与高校之间是怎么"勾结"的? 每一个做院招的培训机构通常会有一个“院校关系”部门,这个部门就是专门为培训机构做疏通培训班与高校之间的关系的,通常这个部门都会拥有一张各大高校 ...

  6. Url重写——伪静态实现

    简述: 在我们浏览网站的时候,很多都是以.html结尾的.难道这些都是静态网页么?其实不是的,它们很多是伪静态 那么什么是伪静态?顾名思义,就是假的静态页面.通过某种设置让你看成是静态的. Q:为何要 ...

  7. shell-for循环

    sheel语言for循环格式 for var in item1 item2 ... itemN do command1 command2 ... commandN done 案例1 #!/bin/ba ...

  8. PRINCE2随笔

    首先要说的是,我这篇体会是针对一定的背景的,不能算是一种通用的管理方式,只能是我自己的经验总结,能给大家平常的管理提供一点思路,我就很满足了. 先说说背景,我所在公司做的是大型桌面应用软件,简单点说就 ...

  9. Gc.Db之循序渐进

    距离上次写Gc.Db框架已经有一段时间了,最近默默对框架代码已经做了不少优化和功能,且已经提交至nuget,大家如果想使用此框架,可以通过nuget搜索:Gc.Db进行下载和安装包. 本篇文章主要是介 ...

  10. 精通Web Analytics 2.0 (8) 第六章:使用定性数据解答”为什么“的谜团

    精通Web Analytics 2.0 : 用户中心科学与在线统计艺术 第六章:使用定性数据解答"为什么"的谜团 当我走进一家超市,我不希望员工会认出我或重新为我布置商店. 然而, ...