JS中事件冒泡和事件捕获介绍

  ?依照澳大乌兰巴托(Australia)传播媒介31日流行广播发表,伊斯坦布尔东北边一处住所产生枪击事件,造成3位驾鹤归西,一个人负伤。方今公安局一度到达现场,但事件缘由未知。(电视记者王聪)

原生js–事件类型

?

壹 、表单事件:

submit事件

reset事件

click事件

change事件

focus事件(不冒泡) (IE和ES5支撑冒泡的focusin)

blur事件(不冒泡) (IE和ES5援助冒泡的focusout)

input事件(ES5 textinput提供更便于的得到输入文字的方案)

?

2、Window事件

load事件

DOMContentLoaded事件

readyStatechage事件

unload事件

beforeunload事件

resize事件

scroll事件

?

三 、鼠标事件

click事件

dbclick事件

mouseover事件(冒泡)

mouseout事件(冒泡)

mousedown事件

mouseup事件

contextmenu事件

mouseenter事件(不冒泡)

mouseleave事件(不冒泡)

mousewheel事件(FF DOMMouseScroll事件、DOM3 wheel事件)

?

四 、键盘事件

keydown事件

keyup事件

keypress事件

9.1、beforeunload事件,unload事件,load事件,error事件,pageshow事件,pagehide事件

以下事件与网页的加载与卸载相关。
(1)、beforeunload事件

(2)、unload事件

(3)、load事件,error事件

(4)、pageshow事件,pagehide事件

谈起JavaScript的
事件,事件冒泡、事件捕获、阻止暗中同意事件那四个话题,无论是面试依然在日常的工作中,都很难制止。
事件捕获阶段:事件从最上一级标签开端往下搜寻,直到捕获到事件目的(target)。
事件冒泡阶段:事件从事件指标(target)起头,往上冒泡直到页面包车型大巴最上拔尖标签。

玖 、文书档案事件


$input.addEventListener("click", function(){
  this.style.border = "5px solid red";
  alert("red")
}, true)
$div.addEventListener("click", function(){
  this.style.border = "5px solid green";
  alert("green")
}, true)
$body.addEventListener("click", function(){
  this.style.border = "5px solid yellow";
  alert("yellow")
}, true)

9.3、scroll事件,resize事件

以下事件与窗口行为有关。
(1)、scroll事件
scroll事件在文书档案或文书档案成分滚动时接触,首要出现在用户拖动滚动条。

window.addEventListener('scroll', callback);

出于该事件会三番五次地质大学方触及,所以它的监听函数之中不应当有万分成本总计的操作。推荐的做法是应用
requestAnimationFrame或setTimeout控制该事件的触发频率,然后能够结合custom伊夫nt抛出3个新事件。

(2)、resize事件
resize事件在改变浏览器窗口大小时触发,产生在window、body、frameset对象方面。

该事件也会接连地大方触及,所以最接近上面包车型大巴scroll事件相同,通过throttle函数控制事件触发频率。

二 、阻止事件冒泡

9.5、cut事件,copy事件,paste事件

以下八个事件属于文本操作触发的轩然大波。

  • cut事件:在将当选的始末从文书档案中移除,参预剪贴板后触发。
  • copy事件:在当选的内容参预剪贴板后触发。
  • paste事件:在剪贴板内容被粘贴到文档后触发。

壹 、冒泡事件:

1.3、mouseover事件,mouseenter事件

mouseover事件和mouseenter事件,都以鼠标进入2个节点时接触。

二者的差距是,mouseenter事件只触发3遍,而一旦鼠标在节点内部移动,mouseover事件会在子节点上接触数次。

// HTML代码为
// <ul id="test">
//   <li>item 1</li>
//   <li>item 2</li>
//   <li>item 3</li>
// </ul>

var test = document.getElementById('test');

// 进入test节点以后,该事件只会触发一次
// event.target 是 ul 节点
test.addEventListener('mouseenter', function (event) {
  event.target.style.color = 'purple';
  setTimeout(function () {
    event.target.style.color = '';
  }, 500);
}, false);

// 进入test节点以后,只要在子Element节点上移动,该事件会触发多次
// event.target 是 li 节点
test.addEventListener('mouseover', function (event) {
  event.target.style.color = 'orange';
  setTimeout(function () {
    event.target.style.color = '';
  }, 500);
}, false);

ele.addEventListener(‘click’,doSomething2,true)
true=捕获
false=冒泡

三、wheel事件


wheel事件是与鼠标滚轮相关的风云,方今唯有3个wheel事件。用户滚动鼠标的滚轮,就接触这一个事件。

该事件除了继续了Mouse伊芙nt、UI伊夫nt、伊夫nt的性质,还有多少个温馨的习性。

  • deltaX:再次来到2个数值,表示滚轮的品位滚动量。
  • deltaY:重返3个数值,表示滚轮的垂直滚动量。
  • deltaZ:重临多少个数值,表示滚轮的Z轴滚动量。
  • deltaMode:再次回到一个数值,表示滚动的单位,适用于地点五个属性。0表示像素,1意味行,2意味页。

浏览器提供2个Wheel伊夫nt构造函数,能够用来扭转滚轮事件的实例。它承受多个参数,第1个是事件名称,第四个是部署对象。

var  syntheticEvent = new WheelEvent("syntheticWheel",  {"deltaX": 4, "deltaMode": 0});

程序员能够自身选取绑定事件时选拔事件捕获照有趣的事件冒泡,方法正是绑定事件时经过add伊芙ntListener函数,它有四个参数,第陆个参数若是true,则意味采取事件捕获,倘若false,则意味接纳事件冒泡。

二、MouseEvent对象


从顶层成分到对象成分或然从指标成分到顶层成分,和事件冒泡是叁个反倒的长河。事件从最不准确的对象(document
对象)开首接触,然后到最标准(也得以在窗口级别捕获事件,可是必须由开发人士尤其钦点)。

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注