Event 对象表示有关事件的信息。
Event 对象的属性提供了有关事件的细节(例如,事件在其上发生的元素)。Event 对象的方法能够控制事件的传播。javascript
属性 | 描述 |
---|---|
bubbles | 返回布尔值,指示事件是不是起泡事件类型。 |
cancelable | 返回布尔值,指示事件是否可拥可取消的默认动做。 |
currentTarget | 返回其事件监听器触发该事件的元素。 |
eventPhase | 返回事件传播的当前阶段。 |
target | 返回触发此事件的元素(事件的目标节点)。 |
timeStamp | 返回事件生成的日期和时间。 |
type | 返回当前 Event 对象表示的事件的名称。 |
例子:html
//chrome点击事件对象 MouseEvent { altKey: false bubbles: true button: 0 buttons: 0 cancelBubble: false cancelable: true clientX: 237 clientY: 558 composed: true ctrlKey: false currentTarget: null defaultPrevented: false detail: 1 eventPhase: 0 fromElement: null isTrusted: true layerX: 237 layerY: 32 metaKey: false movementX: 0 movementY: 0 offsetX: 77 offsetY: 33 pageX: 237 pageY: 558 path: (9)[div.contact - btn, div.btm - box, div.page, body, shadow, document - fragment, html, document, Window] relatedTarget: null returnValue: true screenX: 454 screenY: 746 shiftKey: false sourceCapabilities: InputDeviceCapabilities { firesTouchEvents: true } srcElement: div.contact - btn target: div.contact - btn timeStamp: 196913.30000001471 toElement: div.contact - btn type: "click" view: Window { postMessage: ƒ, blur: ƒ, focus: ƒ, close: ƒ, frames: Window, … } which: 1 x: 237 y: 558 }
preventDefault() 通知浏览器不要执行与事件关联的默认动做。
stopPropagation() 终止事件在传播过程的捕获、目标处理或起泡阶段进一步传播。调用该方法后,该节点上处理该事件的处理程序将被调用,事件再也不被分派到其余节点。java
流是具备方向的数据。
事件流所描述的就是从页面中接受事件的顺序。chrome
DOM事件流包括三个阶段:
1.事件捕获阶段
2.处于目标阶段
3.事件冒泡阶段
ps:事件冒泡即事件开始时,由最具体的元素接收(也就是事件发生所在的节点),而后逐级传播到较为不具体的节点。
浏览器
上图代表DOM处理事件流的三个阶段,而Event对象就是这个过程当中产生的 了解详情dom
1.EventTarget.addEventListenerpost
// 假设 myButton 是一个按钮 myButton.addEventListener('click', function(){alert('Hello world');}, false); //addEventListener最后一个参数, //为true则表明使用事件捕获模式 , //false则表示使用事件冒泡模式。
2.HTML属性code
<button onclick="alert('Hello world!')">
3.DOM元素属性htm
// 假设 myButton 是一个按钮 myButton.onclick = function(event){alert('Hello world');};
ps: 阻止事件冒泡 stopPropagation()对象
button.addEventListener('click', function(event) { event.stopPropagation(); }, false);