zoukankan      html  css  js  c++  java
  • 事件绑定中的return false、preventDefault【转】

    ——–关于取消默认行为不同方法在不同的事件绑定中的不同反应

    在js代码中取消默认行为我们经常使用return false与event.preventDefault
    1、return false不只取消默认行为,还会阻止event flow
    2、event.preventDefault是取消默认行为的DOM标准方法,IE浏览器提供了event.returnValue = false来阻止默认行为,与preventDefault效果相同(IE9已添加preventDefault方法,与标准同步)

    HTML结构:两个结构分别调用两个方法

    <a href="http://www.baidu.com" id="turnBaidu">return false;</a>
    <a href="http://www.google.com" id="turnGoogle">preventDefault();</a>

    JS代码:先看一下DOM0级事件处理程序中的取消默认行为

    var a1 = document.getElementById("turnBaidu"),
    a2 = document.getElementById("turnGoogle");
    
    a1.onclick = function(){
    return false;
    }
    a2.onclick = function(event){
    var e = event || window.event;
    if(e.preventDefault){
    e.preventDefault(); //除IE6-8之外的浏览器(包括IE9)
    }else{
    e.returnValue = false; //IE6-8
    }
    }

    点击查看Demo1查看效果
    结论:DOM0级事件处理两种方法在所有浏览器下都可以阻止默认行为的发生

    JS代码:再看一下DOM2级事件处理程序中的取消默认行为

    var a1 = document.getElementById("turnBaidu"),a2 = document.getElementById("turnGoogle");
    if(a1.addEventListener){ //All browsers except IE6-8
    a1.addEventListener('click',function(){
    return false;
    },false);
    a2.addEventListener('click',function(event){
    var e = event || window.event;
    e.preventDefault();
    },false)
    }else{ //IE6-8
    a1.attachEvent('onclick',function(){
    return false;
    })
    a2.attachEvent('onclick',function(event){
    var e = event || window.event;
    e.returnValue = false;
    })
    }

    点击查看Demo2查看效果
    结论:DOM2级事件处理,在除IE6-8之外的浏览器下return false方法进行了跳转,没有阻止默认行为的发生,即执行addEventListener方法的浏览器在使用return false下没有阻止默认行为(IE9下添加了addEventListener方法)。event.preventDefault方法在任何事件处理下都可以阻止默认行为

    JQuery与QWrap在事件绑定中的不同处理,点击查看Demo3查看效果:
    QWrap在处理return false时进行了跳转,核心代码事件处理应用了addEventListener方法。JQuery在事件处理机制中应用了特殊队列处理,在处理return false的时候同时调用了preventDefault方法。

    取消默认行为推荐标准提供的event.preventDefault方法,避免不同事件处理下的不兼容,勿乱用return false

  • 相关阅读:
    cg数据类型
    线程和流的历史遗留
    流的总结及小问题

    集合练习
    集合属性的整理
    集合
    整理
    面向对象中知识的薄弱点
    自己的小问题和数组常用的方法
  • 原文地址:https://www.cnblogs.com/cuoreqzt/p/2811739.html
Copyright © 2011-2022 走看看