js-事件与行为

事件:用户与计算机进行交互(键盘、鼠标)

事件分类:鼠标类,键盘类,表单类,其它类

  鼠标类:

    鼠标单击事件:click;

    鼠标双击事件:dbclick;

    鼠标移入事件:mouseover;

      鼠标按下松开事件:mouseup;

    鼠标按下时发生事件:mousedown;

    鼠标移出事件:mouseout ;

      鼠标移动时发生事件:mousemove;

  键盘类:

    键盘按下事件:keydown;

    键盘弹起事件:keyup;

  表单类:

    获取焦点时:focus;

    失去焦点时:blur;

    内容改变时:change;

    输入内容时:input;

  其他类:

    资源加载:load;(等待所有资源(script标签所有内容及图片)加载完成后执行)

注册事件的方式:

(1)通过 dom 元素的属性注册事件

    通过对象名.事件名 = function(){}    -->匿名函数

  eg:

 <input type="button" id="btn">点我</button>
    <script>
        // 获取 dom 元素
        var btn = document.getElementById('btn');
        // 通过 dom 元素的属性注册事件
        btn.onclick = function(){          
            console.log("hello word!");
        }
    </script>

(2)通过标签的属性注册事件

 <input type="button" onclick="fun()">点我</button>
    <script> 
       function  fun(){          
            console.log("hello word!");
        }
    </script>

事件监听器:

    addEventListener(事件类型,处理函数,是否捕获)           绑定、捕获事件

    removeEventListener(事件类型,处理函数,是否捕获)     解除绑定

    (是否捕获这个参数是boolean类型,默认为false:冒泡;true为捕获)

<style type="text/css">
            div{
                border: 1px solid #000;
            }
            #d1{
                 700px;
                height: 700px;
            }
            #d2{
                 500px;
                height: 500px;
            }
            #d3{
                 300px;
                height: 300px;
            }
</style>

<div id="d1">
    中国
    <div id="d2">
        湖北
        <div id="d3">武汉</div>
    </div>
</div>

<script type="text/javascript">
var d1 = document.getElementById("d1");
var d2 = document.getElementById("d2");
var d3 = document.getElementById("d3");
d1.addEventListener("click",function(event){
     var event = event || window.event;
     alert("中国")
     event.stopPropagation();    //阻止事件冒泡    W3C标准(兼容性的问题:IE8及以下)
     event.cancelBubble = true;  //阻止事件冒泡      IE
},true)
d2.addEventListener("click",function(){
      alert("湖北")
},true)
d3.addEventListener("click",function(){
      alert("武汉")
 },true)
</script>

//结果是只有中国弹出来,其它没有

事件冒泡:系统默认,由最层向最外层进行传递

事件捕获:通过手动更改,由最外层向最里层进行传递

阻止事件冒泡:stopPropagation()

行为:当有用户操作时所带来的后果

例如:(1)form表单点击提交按钮提交后,带来的后果是表单提交了

   (2)a标签点击以后,带来的后果是页面跳转

   (3)当你在网页上点鼠标右键时,带来的后果是会出现一个右键菜单选项

  以上这些行为都是默认行为,默认行为也称为默认事件,有时候我们是不需要使用这些默认行为的,此时我们就得想办法阻止默认行为

 阻止默认行为有三种方法:针对注册事件

  (1)return false;

<a href="http://www.baidu.com" id="a1">百度</a>
<script type="text/javascript">
var a1 = document.getElementById("a1");
a1.onclick = function(){   
        return false     //常用的

}
</script>

  (2)preventDafault();

<a href="http://www.baidu.com" id="a1">百度</a> 
<script type="text/javascript">
   a1.onclick = function(){
       var event = event || window.event     event.preventDefault(); //W3C标准
}
</script>

  (3)returnValue = false;

<a href="http://www.baidu.com" id="a1">百度</a> 
<script type="text/javascript">
   a1.onclick = function(){
       var event = event || window.event
        event.returnValue = false  //IE8及以下使用
}
</script>

如果事件绑定是用addEventListener来实现的,那阻止默认行为必须用e.preventDefault=true。

原文地址:https://www.cnblogs.com/wcx-20151115-hzz/p/10149615.html