zoukankan      html  css  js  c++  java
  • js事件流

    事件流:

    事件发生后沿着某一方向传播的行为
    > 事件流分为冒泡和捕获

    IE:只有冒泡

    现代浏览器:两种都有,默认冒泡

    网景:只有捕获(但是已经不存在)

    ----------


     ##  **事件分级**:##


    DOM0/DOM1:所有浏览器都有的DOM事件,好处是兼容所有浏览器,缺点是同一事件,只能定义一次,多次定义的结果是,后面的覆盖前面。例如X.onclick,只能定义一次。

    DOM2:事件可以叠加,X.onclick可以定义两个事件,两个事件可以先后执行,但是不是所有浏览器都兼容。例如addEventListener(事件名称,执行代码,事件方想【true:冒泡|false:捕获】)事件,具体代码如下:

         if(document.addEventListener){
                     p1.addEventListener("click",function(e){

                         alert("hello");
                     });
                     p1.addEventListener("click",function(e){
                         alert("hi");
                     });
                 }else{
                     p1.attachEvent("onclick",function(e){
                         alert("hello");
                     });
                     p1.attachEvent("onclick",function(e){
                         alert("hi");
                     });
                 }

    网景:只有捕获(但是已经不存在)


    ----------

     ##  **阻止事件发生**:##

    阻止默认事件的发生:preventDefault(),例如表单验证失败阻止提交

            <h1>注册</h1>
            <form id="regForm" action="#" method="post">
            <div>用户名:<input type="text" id="username" ></div>
            <div>密码:<input type="password" id="pwd" ></div>
            <div><input id="sub" type="button"  ></div>
            </form>
            <script type="text/javascript">
            sb.onclick = function(e){
            regForm.onsubmit = function(e){
                     e = window.event || e;
                     alert("表单提交");
                     if(e.preventDefault){
                         e.preventDefault();   //现代浏览器方法
                     }else{
                         e.returnValue = false;   //IE方法
                     }
                    
                    
                 }
         </script>

    阻止DOM2方法:

        p1.onclick = function(e){
                    e = window.event || e;       //兼容 
                    if(e.stopPropagation){
                        e.stopPropagation();      //现代浏览器方法
                    }else{
                        e.cancelBubble = true;        //IE方法
                    }

  • 相关阅读:
    node.js--express学习之路(三)
    node.js--express学习之路(二)
    node.js--express学习之路(一)
    js简单实现获取验证码倒计时
    HTML5新特性postMessage解决跨域
    跨域通信—JSONP
    前端跨域的那些事
    前后端通信—CORS(支持跨域)
    前后端通信—webSocket(支持跨域)
    JavaScript的运行机制
  • 原文地址:https://www.cnblogs.com/1039595699TY/p/5625025.html
Copyright © 2011-2022 走看看