zoukankan      html  css  js  c++  java
  • javascript事件处理

                                                        javascript事件(一)

        初学js的事件的时候,对它里面的事件流很感兴趣,js采用了两套事件处理流程,准确的说是以IE和其它的浏览器之间对于事件的处理过程不一样(IE总是特例独行,没什么不好的)。下面我说说他们的区别:

        IE用的是事件冒泡法,比如body和body下的元素button同时具有click事件,那么它的执行事件就是先button的事件其次才是body的事件。而另外的是事件捕获,即从根节点开始执行,如上面的列子的执行顺序是先body的click再button的click。但是经过我的实验他们的输出是一样的,代码如下:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style type="text/css">
    </style>
    
    </head>
    
    <body id="eventTest" onclick="clickOne()">
    
    <div id="et" onclick="clickTwo()">点击这里</div>
    
    </body>
    <script src="myTest.js" type="text/javascript"></script> 
    </html>
     function clickOne()//js代码
     {
      alert("you click me first");
     };
     function clickTwo()
     {
      alert("you click me second");
     };

    输出的我用了IE的firefox但是输出的都是先

    you click me second然后
    you click me first

    在来说说添加对元素的监听,代码如下:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <style type="text/css">
    </style>
    
    </head>
    
    <body id="eventTest">
    
    <div id="et">点击这里</div>
    
    </body>
    <script src="myTest.js" type="text/javascript"></script> 
    </html>

    javascript代码:

    var myelement=document.getElementById("eventTest");
    var me=document.getElementById("et");
     var clickOne = function testFun()
     {
      alert("you click me first");
     };
     var clickTwo = function testFun()
     {
      alert("you click me second");
     };
    myelement.addEventListener("click",clickOne,true);
    me.addEventListener("click",clickTwo,true);

    很多书上说IE不支持addEventListener的用法但是我用IE测试的时候没出什么问题我用的是IE9,可能是IE9也兼容了这个方法,上面的例子输出的先是***first再是***second如果,你想把输出的顺序反一下,你可以把true参数改成false(第三的参数是用来决定你的事件流的流程的,当为true时就是采用了事件捕获的方式“从外向内”,如果为false时则采用了冒泡的方法)。

    最后是DOM事件流(很多书上说IE不支持,但是我用IE9的时候好像都可以的吧,如有知道的请说说你的见解):事件捕获——>处理目标阶段——>事件冒泡的阶段。因为还没有知道什么场合使用,就不多说了。



       

  • 相关阅读:
    Vue- 对象语法 v-bind:class与对象语法的使用(重要)
    关于vue中$emit事件问题
    深入理解vue.js2.0指令v-for使用及索引获取
    到底vuex是什么?
    Vue.js学习系列二 —— vuex学习实践笔记(附DEMO)
    前端HTML5几种存储方式的总结
    JSON和JS对象之间的互转
    Vue2.0子父组件通信
    C#字符串和16进制转换
    C#中int32 的有效值范围
  • 原文地址:https://www.cnblogs.com/myxiaoxiaoyi/p/2978541.html
Copyright © 2011-2022 走看看