1. 程式人生 > >js事件流

js事件流

事件冒泡 指定 cancel util detach name prevent sdn details

1.HTML事件處理程序:

JS事件放在HTML裏面。


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>HTML事件處理程序</title>
  5. </head>
  6. <body>
  7. <div>
  8. <input type="button" value="按鈕" onclick="show">
  9. </div>
  10. <script type="text/javascript">
  11. function show(){
  12. alert(‘hello world‘)
  13. }
  14. </script>
  15. </body>
  16. </html>


2.DOM0級事件處理程序:


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>DOM0級事件處理程序</title>
  5. </head>
  6. <body>
  7. <div id="box">
  8. <input type="button" value="按鈕" id="btn">
  9. </div>
  10. <script type="text/javascript">
  11. var btn=document.getElementById(‘btn‘);
  12. btn.onclick=function(){
  13. alert(‘hello world‘)
  14. }
  15. btn.onclick=null;//取消onclick事件
  16. </script>
  17. </body>
  18. </html>

3.DOM2級事件處理程序


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>DOM2級</title>
  5. </head>
  6. <body>
  7. <div id="box">
  8. <input type="button" value="按鈕" id="btn">
  9. </div>
  10. <script type="text/javascript">
  11. //DOM2級事件定義了兩個方法
  12. //用於處理指定和刪除事件程序的操作
  13. //addEventListener()和removeEventListener()
  14. //接收三個參數:要處理的時間名、事件處理程序、布爾值(true:捕獲階段、false:冒泡階段)
  15. //一個按鈕上可以添加多個事件
  16. var btn=document.getElementById(‘btn‘);
  17. btn.addEventListener(‘click‘,function(){
  18. alert(‘hello world‘);
  19. },false);
  20. //刪除事件的參數必須和添加事件的一樣,
  21. btn.removeEventListener(‘click‘,function(){
  22. alert(‘hello world‘);
  23. },false);
  24. </script>
  25. </body>
  26. </html>


4.IE事件處理程序

[html] view plain copy
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>IE事件處理程序</title>
  5. </head>
  6. <body>
  7. <div id="box">
  8. <input type="button" value="按鈕" id="btn">
  9. </div>
  10. <script type="text/javascript">
  11. //attachEvent()添加事件
  12. //detachEvent()刪除事件
  13. //接收相同的兩個參數:事件名稱、事件程序
  14. var btn=document.getElementById(‘btn‘);
  15. btn.attachEvent(‘onclick‘,function(){
  16. alert(‘hello‘)
  17. });
  18. btn.detachEvent(‘onclick‘,function(){
  19. alert(‘hello‘)
  20. })
  21. </script>
  22. </body>
  23. </html>

5.跨瀏覽器事件處理程序


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>跨瀏覽器事件處理</title>
  5. </head>
  6. <body>
  7. <div id="box">
  8. <input type="button" value="按鈕" id="btn">
  9. </div>
  10. <script type="text/javascript">
  11. function show(){
  12. alert(‘hello‘);
  13. }
  14. var eventUtil={
  15. //添加事件
  16. addHandler:function(element,type,handler){
  17. if(element.addEventListener){
  18. addEventListener(type,handler,false);
  19. }else if(element.attachEvent){
  20. attachEvent(‘on‘+type,handler);
  21. }else{
  22. element[‘on‘+type]=handler;
  23. }
  24. }
  25. //刪除事件
  26. removeHandler:function(element,type,handler){
  27. if(element.removeEventListener){
  28. removeEventListener(type,handler,false);
  29. }else if(element.attachEvent){
  30. detachEvent(‘on‘+type,handler);
  31. }else{
  32. element[‘on‘+type]=null;
  33. }
  34. }
  35. }
  36. eventUtil.addHandler(btn,‘click‘,show);
  37. eventUtil.removeHandler(btn,‘click‘,show);
  38. </script>
  39. </body>
  40. </html>


6.DOM事件對象


  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <title>DOM事件對象</title>
  5. </head>
  6. <body>
  7. <div id="box">
  8. <input type="button" value="按鈕" id="btn">
  9. <a href="http://www.baidu.com" id=‘go‘>跳轉</a>
  10. </div>
  11. <script type="text/javascript">
  12. //1.DOM的事件對象
  13. //(1)type屬性 用於獲取時間類型
  14. //(2)target屬性 用戶獲取事件目標
  15. //(3)stopPropagation()阻止事件冒泡
  16. //(4)preventDefault()阻止默認行為
  17. var btn=document.getElementById(‘btn‘);
  18. var box=document.getElementById(‘box‘);
  19. var go=document.getElementById(‘go‘);
  20. btn.onclick=function(e){
  21. alert(‘btn‘)
  22. e.stopPropagation();
  23. };
  24. box.onclick=function(){
  25. alert(‘box‘)
  26. };
  27. go.onclick=function(e){
  28. e.stopPropagation();
  29. e.preventDefault();
  30. }
  31. </script>
  32. </body>
  33. </html>


7.IE事件對象


    1. <!DOCTYPE html>
    2. <html>
    3. <head>
    4. <title>IE事件對象</title>
    5. </head>
    6. <body>
    7. <div id="box">
    8. <a href="" id="go">跳轉</a>
    9. </div>
    10. <script type="text/javascript">
    11. //1.IE的事件對象
    12. //(1)type屬性 用於獲取時間類型
    13. //(2)srcElement屬性 用戶獲取事件目標
    14. //(3)cancelBubble屬性:true:阻止事件冒泡
    15. //(4)returnValue屬性:flase:阻止默認行為
    16. window.onload=function(){
    17. var go=document.getElementById(‘go‘);
    18. var box=document.getElementById(‘box‘);
    19. eventUtil.addHandler(box,‘click‘,function(){
    20. alert(‘111‘)
    21. })
    22. }
    23. var eventUtil={
    24. //添加事件
    25. addHandler:function(element,type,handler){
    26. if(element.addEventListener){
    27. addEventListener(type,handler,false);
    28. }else if(element.attachEvent){
    29. attachEvent(‘on‘+type,handler);
    30. }else{
    31. element[‘on‘+type]=handler;
    32. }
    33. },
    34. //刪除事件
    35. removeHandler:function(element,type,handler){
    36. if(element.removeEventListener){
    37. removeEventListener(type,handler,false);
    38. }else if(element.attachEvent){
    39. detachEvent(‘on‘+type,handler);
    40. }else{
    41. element[‘on‘+type]=null;
    42. }
    43. },
    44. getEvent:function(event){
    45. return event?event:window.event;
    46. },
    47. getType:function(event){
    48. return event.type;
    49. },
    50. getTarget:function(){
    51. return event.target||event.srcElement
    52. },
    53. preventDefault:function(event){
    54. if(event.preventDefault{
    55. event.preventDefault()
    56. }else{
    57. event.returnValue=false;
    58. }
    59. },
    60. stopPropagation:function(){
    61. if(event.stopPropagation){
    62. event.stopPropagation();
    63. }else{
    64. event.cancelBubble:false;
    65. }
    66. }
    67. }
    68. </script>
    69. </body>
    70. </html>

js事件流