事件流 阻止元素默认事件

浅浅的花香味﹌ 2022-05-17 13:42 357阅读 0赞

当页面元素触发事件的时候,该元素的容器以及整个页面都会按照特定顺序响应该元素的触发事件,事件传播的顺序叫做事件流程。

事件流的分类:

1.冒泡型事件流(所有浏览器都支持)

由最明确的事件源到最不明确的事件源依次向上触发。

2.捕获型事件流(IE不支持 W3c标准 火狐)(不常用)

由最不明确的事件源到最明确的事件源依次向下触发。

阻止事件流的方法:

IE: 事件对象.cancelBubble = true;

火狐:事件对象.stopPropagation();

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>阻止事件流</title>
  6. <style type="text/css">
  7. #beijing{
  8. width: 400px;
  9. height: 400px;
  10. background-color: red;
  11. }
  12. #chaoyang{
  13. width: 300px;
  14. height: 300px;
  15. background-color: blue;
  16. }
  17. #shunbailu{
  18. width: 200px;
  19. height: 200px;
  20. background-color: orange;
  21. }
  22. </style>
  23. </head>
  24. <body>
  25. <div id="beijing">北京
  26. <div id="chaoyang">朝阳
  27. <div id="shunbailu">
  28. 顺白路
  29. </div>
  30. </div>
  31. </div>
  32. <script>
  33. document.getElementById("beijing").onclick = function () {
  34. alert("北京");
  35. }
  36. document.getElementById("chaoyang").onclick = function (e) {
  37. alert("朝阳");
  38. var ev = window.event || e;
  39. if(document.all){
  40. // IE的属性
  41. ev.cancelBubble = true;
  42. }else{
  43. //火狐的方法
  44. ev.stopPropagation();
  45. }
  46. }
  47. document.getElementById("shunbailu").onclick = function (e) {
  48. alert("顺白路");
  49. var ev = window.event || e;
  50. if(document.all){
  51. // IE的属性
  52. ev.cancelBubble = true;
  53. }else{
  54. //火狐的方法
  55. ev.stopPropagation();
  56. }
  57. }
  58. </script>
  59. </body>
  60. </html>

阻止浏览器默认行为:(一般用于a标签和form表单里的submit按钮)

IE:事件对象.returnValue = false;

火狐:事件对象.preventDefault();

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>每日一练</title>
  6. <style>
  7. </style>
  8. </head>
  9. <body>
  10. <a href="https://www.baidu.com" id="link">百度</a>
  11. <script>
  12. var m = document.getElementById("link");
  13. m.onclick = function (e) {
  14. alert("点击成功");
  15. // 获得事件对象
  16. // 阻止浏览器默认行为的方法在事件对象里存储
  17. var ev = window.event || e;
  18. if(document.all){
  19. // IE的属性
  20. ev.returnValue = false;
  21. }else{
  22. // 火狐的方法
  23. ev.preventDefault();
  24. }
  25. }
  26. </script>
  27. </body>
  28. </html>

也可以用一种较为简单的方法:在a标签的href属性里加:javascript:void(0);

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>每日一练</title>
  6. <style>
  7. </style>
  8. </head>
  9. <body>
  10. <a href="javascript:void(0);"></a>
  11. </body>
  12. </html>

发表评论

表情:
评论列表 (有 0 条评论,357人围观)

还没有评论,来说两句吧...

相关阅读