Re: [问题] Javascript Event Capture/Bubble

楼主: eight0 (欸XD)   2015-07-03 01:49:48
※ 引述《ericdoctor (小黑)》之铭言:
: 各位好
: 小的是前端新手
: 近来读到javascript event在浏览器的发生的两个阶段
: 也就是 event bubbling/capturing
: 想请问各位~
: 关于这两种事件处理有什么应用吗??
: 因为好像IE8以前都不支援~
: 所以老旧的网页都没有相关的code
: Google也找不到我想要的结果
: 请各位指教
: 谢谢
事件的触发顺序可以参考这张图︰
http://www.w3.org/TR/DOM-Level-3-Events/eventflow.svg
以 form 为例子︰
1. 你想做一个按钮,按下后会跳出悬浮选单
2. 选单上有按钮可以做某些事
3. 按任意空白处隐藏悬浮选单
4. 等待连线时,把整个 form 禁用
可以分别注册四个不同的事件
1. button.click + stopPropagation,显示悬浮选单
2. button.click + stopPropagation,执行选单上的项目
3. document.click,隐藏悬浮选单
4. form.click + capture + stopPropagation
button.click + stopPropagation 可以让事件不要往上 bubble,
否则 document.click 收到 bubbled event 就会把悬浮选单给隐
藏。
form.click + capture + stopPropagation 可以让事件连 target
phase 都到不了,保证 form 内的 click event 不会被触发。
但是以我的角度来说的话,我会建议无论如何都不要用 capture,
除非你确定你要的特殊功能必须使用 capture(e.g. 侧录键盘︰
window.keydown + capture;url rewrite︰window.click +
capture),否则应该都有更好的做法。
作者: ericdoctor (小黑)   2015-07-03 03:19:00
感谢80大指教 没有想过这种用法 大概了解了!!! 谢谢:-)

Links booklink

Contact Us: admin [ a t ] ucptt.com