>**原題:解析一下DOM事件流**
答:DOM事件流分三個階段,自上而下的捕獲,作用在最深處的目標階段,以及自下而上的冒泡
>如何消除事件冒泡與事件默認行為
給目標函數一個event參數,
用event.stopPropagation();消除事件冒泡;
用event.preventDefault();阻止默認行為, 對于a標簽也可以將標簽鏈接改成`javascript:void(0)`阻止
>DOM0級事件與DOM2級事件的區別
1. DOM0級只能添加一個事件,后面添加的事件會覆蓋前面的
2. DOM2級可以添加多個事件
3. DOM2級可以可以接受三個參數,將第三個參數改成true,可以控制捕獲事件的執行,默認為false
```
three.addEventListener("click", function(){
console.log('這是three')
}, true)
```
-----
> 事件捕獲:事件從上至下執行
```js
<div class="parent" id="parent">
<div class="child" id="child"></div>
</div>
<script>
var parent = document.getElementById('parent')
var child = document.getElementById('child')
parent.addEventListener('click', function(){
console.log('parent');
}, true)
child.addEventListener('click', function(){
console.log('child');
}, true)
</script>
```
此時,先打印 parent 再打印 child ,冒泡則相反
參考[addEventListener用法](https://blog.csdn.net/juelingfeng/article/details/45564023)
- JavaScript
- 1. DOM事件流
- 2. 模擬 new, Object create(), bind
- 5. 封裝函數進行字符串駝峰命名的轉換
- 6. 什么是promise
- 7. 判斷一個數是否為數組
- 10. __proto__和prototype以及原型,原型鏈,構造函數
- 11. 繼承
- 12. 閉包
- 13. 回調函數
- 14. var 和 let 區別
- 15. this、bind、call、apply
- 16.undefined和null的區別
- 17.內存泄漏
- 18.垃圾回收機制
- html css
- 1. 元素垂直水平居中
- 2. 清除浮動
- 3. bootstrap柵格系統
- 4. px rpx em rem vw 的區別
- 5. 兩種盒子模型
- 6. 合集
- web類
- 1. html5的新特性以及理解(web標簽語義化)
- 2. 什么是路由,關于前端路由和后端路由
- 3. 對優質代碼的理解
- 4. cookie 和 sessionStorage和localStorage
- 5. 瀏覽器內核
- 6. http 狀態碼
- 7. href 和 src 的區別
- 8. link 和 @import 的區別
- 9. http 狀態碼
- 10. websocket
- 11. 瀏覽器解析url
- 12.http緩存
- vue
- 1.vue2和vue3有哪些區別
- 1. 對 mvvvm 的理解
- 2. mvvm的優缺點
- 3. 數據雙向綁定的原理
- 4. 生命周期
- 5. 組件如何通信
- 6. computed和watch的區別
- 7. proxy 和 Object.defineProperty
- 8. 虛擬dom和 diff算法
- 9. 路由的嵌套與傳參
- 10. 路由導航鉤子
- 11. axios 的理解
- 12. vue自定義指令 diretive
- 13. diff 的實現
- 14. 實現一個簡單的雙向綁定
- 15. 為什么 data 是一個函數
- 題譜
- js
- 手寫篇
- css
- vue
- react
- 算法
- 自我介紹
- 八股文
- 源項目地址
- 1.計算機網絡
- 2.瀏覽器
- 3.html和css
- 4.javascript
- 6.typescript
- 7.vue
- 8.react
- 大廠面試
- 面試題大全
- 常見性能優化
- 面試實戰
- 面試分析
- 押題
- 1.微前端在項目中的實際應用
- 2.性能優化
- vue相關
- 1.說一說HashRouter和HistoryRouter的區別和原理
- 無敵之路,牛客網面試題自測記錄
- 前端基礎
- 1.html
- 2.js基礎
- 珠峰性能優化
- WebWorker
- url到渲染
- 瀏覽器加載機制
- 自我介紹1
- 手寫題
- 1.compose
- 2.setTimeout模擬setInterval
- 3.手寫數組拍平
- 4.手寫promise.all
- 5.手寫深拷貝
- webpack
- 實戰