• js事件


     5 /**
     6  * 事件
     7  */
     8 /**事件流
     9  * 1、事件冒泡 IE事件流叫事件冒泡 event bubbling 即由具体到不具体
    10  * 2、事件捕获 从最不具体到具体 Safari chrome opera Firefox都支持事件捕获
    11  * 3、DOM事件流 包含三个阶段:
    12  *  (1)事件捕获阶段
    13  *  (2)处于目标阶段
    14  *  (3)事件冒泡阶段*/
    15 
    16 /**
    17  * 事件处理程序或者事件监听器
    18  * 事件定义:事件就是用户或者浏览器自身执行的某种动作 如click load。。。
    19  * 1、HTML事件处理程序 就是在HTML元素中调用JavaScript
    20  *    使用缺点:(两个)
    21  *         HTML与JavaScript代码紧密耦合,如果要更换事件处理程序,就要改动两个地方 HTML代码和JavaScript代码
    22  *         (自己发现的bug:当用HTML事件时 用原生的
    23  *              window.onload = function(){
    24   *                  var handleFunc = function(){alert("这是HTML事件!");}
    25  *               }加载完在执行时会报错),所以尽量不要使用HTML事件流
    26  *              比如:eventUtils.html:10 Uncaught ReferenceError: handleFunc is not defined)
    27  * 2、DOM0级事件处理程序 就是将一个函数赋值给一个事件处理程序属性
    28  *    使用前提首先必须取得一个要操作的对象引用
    29  *    使用优点:(两个)
    30  *          简单 具有跨浏览器的优势
    31  *    注意点:
    32  *          制定事件事件处理程序时,在这一段运行以前不会制定事件处理程序,因此如果这些代码在页面中位于
    33  *              按钮后面,就有可能在一段事件内怎么单击都没有反应。
    34  *          使用DOM0级方法指定的事件处理程序被认为是元素的方法,在这时候的事件处理程序时在元素的作用域
    35  *              中运行,也就是说程序中的this引用当前元素
    36  *          这种方式添加事件处理会在事件流的冒泡阶段处理。
    37  *    取消DOM0级事件方法:
    38  *          将事件程序属性值设计为null
    39  *          如:btn.onclick = null;单击按钮将不会有任何动作发生
    40  *
    41  *   (自己发现的bug:
    42  *        window.onload = function(){
    43             var handleFunc = function(msg){
    44                 alert(msg);
    45             }
    46 
    47             //DOM0事件
    48             var btn = document.getElementById("btn0");
    49             btn.onclick = handleFunc("这是DOM0级事件!");//当使用这个调用函数时,文档加载的过程中就会
    50                                                          执行一次handleFunc函数,再次点击事件时没有函
    51                                                          数没有响应,也不会报错。所以使用DOM0级事件时
    52                                                          并要调用函数时尽量把要调用的函数写在事件中如:
    53                                                           btn.onclick = function(){alert("这是DOM0级事件!");}
    54         };
    55  *   )
    56  *   3、DOM2级事件处理程序 定义了两个事件 addEventListener()和removeEventListener()方法
    57  *      优点:所有的DOM节点都包含两个方法并且都接受3个参数即 要处理的事件名 作为事件处理城西的函数 一个布尔值
    58  *            可以添加多个事件处理程序
    59  *      最后一个布尔值 若是true表示捕获阶段调用事件处理程序
    60  *                     若是false表示冒泡阶段调用事件处理程序,一般情况下都是把事件程序调价到事件流的冒泡阶段,
    61  *                          这样可以最大限度兼容各种浏览器
    62  *      注意点:当使用removeEventListener()删除事件处理程序时,函数的三个参数都要一样,否则不能删除事件处理程序。
    63  *              因为removeEventListener()和addEventListener()的第二个函数要是各自自己写的话这两个函数就是不同的函数
    64  *              所以一般使用方式为:
    65  *              addEventListener(event,handle,false);
    66  *              removeEventListener(event,handle,false);把handle函数抽出来单独写。
    67  * */
     1 <!DOCTYPE html>
     2 <html lang="en">
     3 <head>
     4     <meta charset="UTF-8">
     5     <title>事件</title>
     6     <script type="text/javascript" src="eventUtils.js"></script>
     7 </head>
     8 <body>
     9     <div id="event">
    10         <input type="button" value="html事件" onclick="handleFunc('这是HTML事件!')" /><!--HTML事件--> <!--handleFunc执行时会报错 -->
    11        <!-- eventUtils.html:10 Uncaught ReferenceError: handleFunc is not defined-->
    12         <input type="button" value="DOM0事件" id="btn0" />
    13         <input type="button" value="DOM2事件" id="btn2" />
    14     </div>
    15     <script type="text/javascript">
    16         window.onload = function(){
    17             var handleFunc = function(msg){
    18                 alert(msg);
    19             }
    20             var handleDOM2 = function(){
    21                 alert("dom2级事件!");
    22             }
    23 
    24             //DOM0事件
    25             var btn = document.getElementById("btn0");
    26             //btn.onclick = handleFunc("这是DOM0级事件!");//不要这样调用,否则会出错并且文档加载中会自动执行一次handleFunc函数
    27             btn.onclick = function(){
    28                 handleFunc("这是DOM0级事件!");
    29             }
    30 
    31             //DOM2级事件
    32             var btn2 = document.getElementById("btn2");
    33             btn2.addEventListener("click", handleDOM2, false);
    34             btn2.removeEventListener("click", handleDOM2, false);
    35         }
    36     </script>
    37 </body>
    38 </html>
  • 相关阅读:
    [css3]搜索框focus时变长
    [css3]文字过多以省略号显示
    HTML5表单新增属性
    [JS]getYear()和getFullYear()方法区别
    红包彩带动画效果
    ios下input focus弹出软键盘造成fixed元素位置移位
    旋转效果
    移动端前端开发
    如何加快页面加载速度
    centos7/rhel7下安装redis4.0集群
  • 原文地址:https://www.cnblogs.com/webgg/p/5367220.html
Copyright © 2020-2023  润新知