zoukankan      html  css  js  c++  java
  • 【分享】return false,对阻止事件默认动作的一些测试


    首先页面上有一个 <textarea id="test"></textarea>
    我们为其绑定以下事件
                	test.onkeydown = function(){
                        return false;
                    }
                    
                    test.onkeyup = function(){
                        return false;
                    }
                   
                    test.onkeypress = function(){
                        return false;
                    }
            

    我们分别注释掉其中的两个事件,每次测试仅绑定一个事件。
    很明显我们每个函数都返回false,如果返回值可以阻止事件默认动作,那么文本框将无法输入任何内容。
    看下面我测试的结果,注意红的部分。
    最后我分别把事件绑定两次,每次返回false看是否能阻止默认动作。
    还是用了一个a标记测试onclick 返回false 是否跳转。
    侦听事件返回 false 是否阻止事件默认动作
      chrome IE-8 firfox oper Safari
    onkeydown yes yes yes no yes
    onkeyup no no no no no
    onkeypress yes yes yes yes yes
    onclick yes yes yes yes yes
    keydown * 2 no 取最后的FN结果 no no no
    keypress * 2 no 取最后的FN结果 no no no
    click * 2 no 取最后的FN结果 no no no
    e.preventDefault(); yes no yes yes(keydown:no) yes
    e.returnValue = false no yes no no no
    可以看出浏览器表现确实不太一样,当然IE是最麻烦的东西了。
    最意外的是在opera中 绑定down 返回false,居然也不能阻止默认动作。
    所以以后在写要阻止浏览器默认动作的时候,还用标准的方法比较好。(后面我提供了)
    不然在多人协作的工作中,会相当麻烦。
    演示的页面 有需要的可以发邮件给我。我就不贴上来了。
        /*
         * 用下面的代码就不会发生悲剧了
         * 最终结论
         * E(e).stop(); 阻止时间冒泡
         * E(e).prevent();阻止时间默认行为
         */	
        var E = function(e){
    		e = window.event || e;
    		return {
                stop: function() {
                    if (e && e.stopPropagation) e.stopPropagation();
                    else e.cancelBubble = true
                },
                prevent: function() {
                    if (e && e.preventDefault) e.preventDefault();
                    else e.returnValue = false
                }
    		}
    	}
        
    	
  • 相关阅读:
    RAID磁盘阵列详解以及软RAID的实施部署
    Ubuntu 安装 配置 Mysql
    Asp.net页面之间传递参数的几种方法
    asp.net中网页间传递参数用什么方法比较
    Asp.net页面之间传递参数的几种方法
    asp.net中网页间传递参数用什么方法比较
    Asp.net页面之间传递参数的几种方法
    asp.net中网页间传递参数用什么方法比较
    CSS2.0中最常用的18条技巧
    Asp.net页面之间传递参数的几种方法
  • 原文地址:https://www.cnblogs.com/idche/p/1876604.html
Copyright © 2011-2022 走看看