Event

事件(event)是javascript應用跳動的心臟,進行交互,使網頁動起來
      事件多是用戶在某些內容上的點擊,鼠標通過某個特定元素或按下鍵盤上的某些按鍵
      事件還多是web網頁加載完成,用戶滑動窗口,改變窗口大小   
      經過js能夠監聽特定事件的發生,並規定讓某些事件發生,以對這些事件做出響應
 
     對用戶行爲或者頁面自身行爲的一種監聽
     當某種行爲觸發以後,會調用指定的函數執行
     事件通常要配合函數使用!!經過事件驅動函數的執行
 
做用:
     1.驗證用戶輸入的數據
     2.增長頁面的動感效果
     元素與元素之間的交互,用戶與頁面之間的交互,前段與後端的交互
   
事件流:
     分兩個階段:捕獲階段和冒泡階段(IE)提出
     捕獲:先由不具體的元素接收事件,最具體的節點最後才能接收到事件
     冒泡:先從具體的接收元素,而後逐步向上傳播不具體的元素 
 
事件名稱:click 點擊 , mousemove 鼠標移動 , load 加載
          onload 加載事件   onclick 點擊事件的處理函數
          
事件三種方式\DOM事件級別:3級
     1.行內事件\HTML事件:就是將事件處理函數做爲html的屬性來使用;耦合度高  
       不屬於DOM事件級中的任意一種       
        1)<input type="button" value="按鈕" onclick="alert(js行內事件');"/>    
        2)<input type="button" value="按鈕" onclick="showMsg();"/>
           js-->function showMsg () {
                    alert('js行內事件2');
                }
            若是方法名改變,那麼就改兩處,方法名和引用位置都要改,不方便!!!
 
      2.DOM0級事件處理--解耦
            步驟:
                (1)先獲取須要綁定事件的元素對象
                (2)給該元素對象綁定事件
        缺點:DOM0級事件,不能給同一個元素對象綁定同類型的事件,
              由於後面的事件覆蓋前面的事件處理函數
        取消事件:onclick=null ;把時間置爲空
         <input type="button" value="按鈕" id="btn"/>
         js-->var inputs = document.getElementById("btn");
               inputs.onclick = function () { \\也可使用鏈式操做
                    //func回調函數,也叫監聽函數
                   alert("你好");
               }
 
     3.DOM2事件:才分捕獲和冒泡,D0沒有
          獲取元素,綁定事件 addEventListener   listen聽 listener監聽
          傳入三個參數:addEventListener(事件名稱,事件處理方法,是否冒泡)
          用DOM2級事件,不須要加on 如onclick——>click
          能夠綁定多個事件,之間不會覆蓋
          缺點:兼容問題(跟IE有關!!)
          取消事件:removeEventlistener('事件名稱字符串',事件處理方法,是否冒泡)
 
     4.DOM3級事件
       DOM3級事件在DOM2級事件的基礎上添加了更多的事件類型,所有類型以下:
       UI事件,當用戶與頁面上的元素交互時觸發,如:load、scroll
       焦點事件,當元素得到或失去焦點時觸發,如:blur、focus
       鼠標事件,當用戶經過鼠標在頁面執行操做時觸發如:dblclick、mouseup
       滾輪事件,當使用鼠標滾輪或相似設備時觸發,如:mousewheel
       文本事件,當在文檔中輸入文本時觸發,如:textInput
       鍵盤事件,當用戶經過鍵盤在頁面上執行操做時觸發,如:keydown、keypress
 
IE兼容DOM2
     1.IE8以及如下不支持 addEventListener,removeEventListener
       那麼要使用[兩個參數,不須要指定是否冒泡]
       attachEvent(事件名[帶on的事件名],處理方法
       detachEvent(事件名[帶on的事件名],處理方法)
     2.在IE9,IE10中同時支持這兩種方式
     3.在IE11 只支持addEventListener,removeEventListener 
 
封裝事件:讓元素對象同時支持現代瀏覽器和IE8以及如下的瀏覽器
     抓住二者不一樣點
     若是window.addEventListener 存在就用他綁定
     若是不存在用attachEvent
 
     /** 文檔註釋
      * @func:  兼容各個瀏覽器的DOM2事件
      * @param:  {obj}  要被綁定事件的對象
      * @param:  {eventType}  事件類型
      * @param:  {fn}  事件處理的方法
     function bindEvent(obj,eventType,fn){   //fn方法名,fn()調用
          if(window.addEventListener){
               obj.addEventListener(eventType,fn,false)
          }else{
               obj.attachEvent('on'+eventType,fn)
          }
 
事件冒泡:
     false:表明在冒泡階段執行
           ('click',fn1,false)
     true:表明在捕獲階段執行
           ('click',fn1,true)
     在函數裏面阻止冒泡
      1.第一步在函數裏面定義一個形參event
      2.調用方法 event.stopPropagation();stop泡
      function fn1(event){
        event.stopPropagation();//阻止冒泡!!!
        alert('我是目標事件!');
      }
 
事件捕獲:由父到子的傳遞過程
 
事件捕獲和事件冒泡:
     捕獲階段
     document.body.addEventListener('click',function(){
          alert('我是body,緊隨document觸發');
          document.body.style.background='red';
     },true);
     冒泡階段
     document.body.addEventListener('click',function(){
          alert('----');
          document.body.style.background='';
     },false};
     寫在一塊兒時,最終背景無顏色變化,應註釋冒泡階段代碼
 
計算器:
     1.加法
     sum.onclick=function(){
          var v1=Number(num1.value); //默認獲得就是字符串類型
          var v2=Number(num2.value);
          result.value=v1+v2;
     }
     2.加減乘除運算
     result.value = eval(num1.value) 把一段字符串解析成js代碼
     3.退格
     num.value=num.value.slice(0,num.value.length-1);
 
鼠標事件
     onclick: 鼠標單擊事件  使用率90%
     ondblclick: 鼠標雙擊事件
     onmousedown: 鼠標上的按鈕被按下時
     onmouseup: 鼠標按下後,鬆開時激發的事件
 
     d.onmousedown = function () {
        console.log('鼠標被按下!!');
     };
     onmouseover: 當鼠標移動\入到某對象範圍的上方時觸發的事件 over超過,上方
     onmousemove: 鼠標移動時觸發的事件
     onmouseout: 當鼠標移出\離開某對象範圍時觸發的事件
 
把大問題分紅小問題,去解決
鼠標控制鍵盤hover特效:
   event.target  指向當前的事件元素 event.target==M true
     var array = document.getElementsByClassName('btn');
     obj.onmouseover = function (event) {
          event.target.style.color = 'red';
     obj.onmouseout = function () {
 
鍵盤事件:
     onkeypress: 當鍵盤上的某個鍵被按下並釋放時觸發事件 
          貪吃蛇:沒反應
     onkeydown: 當鍵盤上某個按鍵被按下時觸發的事件,cl會一在直打印
     onkeyup: 當鍵盤上某個按鍵被放開時觸發的事件,按鍵鬆開時,cl打印
          貪吃蛇用此事件
     注意:頁面內必須有被聚焦的對象
     event.keyCode 返回鍵盤碼
     document.onkeypress = function(){
 
鍵盤控制運動
     var div = document.getElementById('div');
    document.onkeyup = function (event) {
        var code = event.keyCode;
        if (code == 38) {
            //往左走
            div.style.top = (div.offsetTop-100)<0?0:div.offsetTop-100 +'px';
        } else if (code == 40) {
            div.style.top = div.offsetTop+100 +'px';
        } else if (code == 37) {
            div.style.left = (div.offsetLeft-100)<0?0:div.offsetLeft-100 +'px';
        } else if (code == 39) {
            div.style.left = div.offsetLeft+100 +'px';
        }
    };
 
document.onmousemove=function(e){
    mov.style.left= e.pageX+'px';
}
全局鼠標移動,放大鏡跟着移動

 
Event對象
     1.跟特定事件相關,且包含該事件的屬性和方法的對象
     2.能夠傳遞給事件處理程序
     3.經過傳入的參數,在函數內部能夠訪問到全部的方法和屬性
     兼容性:IE8 以及如下不傳入event對象
             用window.event 作兼容
     btn.onclick = function(event){
          event=event || window.event  //使用‘或’進行兼容
       
Event對象:事件方法
     1.stopPropagation: 阻止冒泡,就是在子元素上觸發事件,不會觸發父元素的事件
          兼容性:IE8及如下,用cancelBubble代替stopPropagation
          用法:event.cancelBubble = true;
     2.preventDefault: 阻止瀏覽器默認行爲!!!如:a標籤跳轉或者表單提交
          兼容性:IE9及如下,用returnValue屬性爲false來實現
          用法:event.returnValue=false;
     實例封裝
     1.阻止冒泡
     child.onclick = function (event) {
        event = event || window.event;//使用或進行兼容
        if (event.stopPropagation) {
            event.stopPropagation();
        } else {
            event.cancelBubble = true;
     2.阻止默認行爲
     a.onclick = function (event) {
        event = event || window.event;
        if (event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
 
Event對象屬性:4塊
     1.type: 返回事件類型,如click
     2.target: 返回事件觸發的目標元素
          兼容性:IE8及如下用 srcElement
     btn.onclick  = function (e) {
        e = e || window.event;//取IE的event對象
        var ele = e.target || e.srcElement;//取出元素,兼容IE8 srcElement
        console.log(e.type); //click
        console.log(ele); //<button id="btn">事件屬性</button>
 
   3.鼠標事件屬性
     screenX: 當前鼠標點距離屏幕左上角的水平距離
     screenY: 當前鼠標點距離屏幕左上角的垂直距離
     clientX: 當前鼠標點距離瀏覽器左上角的水平距離
     clientY: 當前鼠標點距離瀏覽器左上角的垂直距離
     pageX: 當前鼠標點距離頁面(document/body)左上角的水平距離
     pageY: 當前鼠標點距離頁面(document/body)左上角的垂直距離
     button: 獲取鼠標 點擊那個鍵 ;非IE瀏覽器中0爲鼠標左鍵,1爲鼠標中鍵,2爲鼠標右鍵
     which: 返回Unicode碼
 
     4> 鍵盤事件屬性:
        keycode : 返回鍵盤碼
        ctrlKey: 是否按下ctrl鍵,若是按了,返回true,不然返回false
        shiftKey: 是否按下shift鍵,若是按了,返回true,不然返回false
        altKey: 是否按下alt鍵,若是按了,返回true,不然返回false
 
文檔事件
     onload: 當頁面加載完成後,觸發!!在整個頁面加載完後觸發
     onresize: 當瀏覽器窗口大小被改變時,觸發!
     onscroll: 當頁面滾動的時候觸發
     onbeforeunload: 當頁面關閉或者刷新的時候觸發
          須要配合return來使用。用event.returnValue="提示信息"解決兼容性
          老的瀏覽器會把return以後的值返回,可是部分新瀏覽器只能使用默認的提示框
        window.onscroll = function () {
            console.log('文檔滾動了!!!');
      
        window.onbeforeunload = function (event) {
            event.returnValue = '你要離我而去嗎?!';
 
返回頂部
      document.body.scrollTop能夠獲取頁面滾動的高度,同時能夠賦值,更改滾動的高度       
 
表單事件:
     onfocus:當某個元素得到焦點時觸發的事件
     onblur:當前元素失去焦點時觸發的事件
     onchange:當前元素失去焦點而且元素的內容發生改變而觸發的事件
     onreset:當表單中reset的屬性被激發時觸發的事件
     onsubmit:一個表單被提交時觸發的事件
     咱們能夠的經過form表單的name屬性,獲取整個表單!!!,action="#"提交到本地,submit纔有效果
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
事件(event)是javascript應用跳動的心臟,進行交互,使網頁動起來
      事件多是用戶在某些內容上的點擊,鼠標通過某個特定元素或按下鍵盤上的某些按鍵
      事件還多是web網頁加載完成,用戶滑動窗口,改變窗口大小   
      經過js能夠監聽特定事件的發生,並規定讓某些事件發生,以對這些事件做出響應
 
     對用戶行爲或者頁面自身行爲的一種監聽
     當某種行爲觸發以後,會調用指定的函數執行
     事件通常要配合函數使用!!經過事件驅動函數的執行
 
做用:
     1.驗證用戶輸入的數據
     2.增長頁面的動感效果
     元素與元素之間的交互,用戶與頁面之間的交互,前段與後端的交互
   
事件流:
     分兩個階段:捕獲階段和冒泡階段(IE)提出
     捕獲:先由不具體的元素接收事件,最具體的節點最後才能接收到事件
     冒泡:先從具體的接收元素,而後逐步向上傳播不具體的元素 
 
事件名稱:click 點擊 , mousemove 鼠標移動 , load 加載
          onload 加載事件   onclick 點擊事件的處理函數
          
事件三種方式\DOM事件級別:3級
     1.行內事件\HTML事件:就是將事件處理函數做爲html的屬性來使用;耦合度高  
       不屬於DOM事件級中的任意一種       
        1)<input type="button" value="按鈕" onclick="alert(js行內事件');"/>    
        2)<input type="button" value="按鈕" onclick="showMsg();"/>
           js-->function showMsg () {
                    alert('js行內事件2');
                }
            若是方法名改變,那麼就改兩處,方法名和引用位置都要改,不方便!!!
 
       2.DOM0級事件處理--解耦
            步驟:
                (1)先獲取須要綁定事件的元素對象
                (2)給該元素對象綁定事件
        缺點:DOM0級事件,不能給同一個元素對象綁定同類型的事件,
              由於後面的事件 覆蓋前面的事件處理函數
        取消事件:onclick=null ;把時間置爲空
         <input type="button" value="按鈕" id="btn"/>
         js-->var inputs = document.getElementById("btn");
               inputs.onclick = function () { \\也可使用鏈式操做
                    //func回調函數,也叫監聽函數
                   alert("你好");
               }
 
     3.DOM2事件:才分捕獲和冒泡,D0沒有
          獲取元素,綁定事件 addEventListener   listen聽 listener監聽
          傳入三個參數: addEventListener(事件名稱,事件處理方法,是否冒泡)
          用DOM2級事件,不須要加on 如onclick——>click
          能夠綁定多個事件,之間不會覆蓋
          缺點:兼容問題(跟IE有關!!)
          取消事件:removeEventlistener( '事件名稱字符串',事件處理方法,是否冒泡)
 
     4.DOM3級事件
       DOM3級事件在DOM2級事件的基礎上添加了更多的事件類型,所有類型以下:
       UI事件,當用戶與頁面上的元素交互時觸發,如:load、scroll
       焦點事件,當元素得到或失去焦點時觸發,如:blur、focus
       鼠標事件,當用戶經過鼠標在頁面執行操做時觸發如:dblclick、mouseup
       滾輪事件,當使用鼠標滾輪或相似設備時觸發,如:mousewheel
       文本事件,當在文檔中輸入文本時觸發,如:textInput
       鍵盤事件,當用戶經過鍵盤在頁面上執行操做時觸發,如:keydown、keypress
 
IE兼容DOM2
     1.IE8以及如下不支持 addEventListener,removeEventListener
       那麼要使用[ 兩個參數,不須要指定是否冒泡]
       attachEvent(事件名[ 帶on的事件名],處理方法
       detachEvent(事件名[帶on的事件名],處理方法)
     2.在IE9,IE10中同時支持這兩種方式
     3.在IE11 只支持addEventListener,removeEventListener 
 
封裝事件:讓元素對象同時支持現代瀏覽器和IE8以及如下的瀏覽器
     抓住二者不一樣點
     若是window.addEventListener 存在就用他綁定
     若是不存在用attachEvent
 
     /** 文檔註釋
      * @func:  兼容各個瀏覽器的DOM2事件
      * @param:  {obj}  要被綁定事件的對象
      * @param:  {eventType}  事件類型
      * @param:  {fn}  事件處理的方法
     function bindEvent(obj,eventType,fn){   //fn方法名,fn()調用
          if(window.addEventListener){
               obj.addEventListener(eventType,fn,false)
          }else{
               obj.attachEvent('on'+eventType,fn)
          }
 
事件冒泡:
     false:表明在冒泡階段執行
           ('click',fn1,false)
     true:表明在捕獲階段執行
           ('click',fn1,true)
     在函數裏面阻止冒泡
      1.第一步在函數裏面定義一個形參event
      2.調用方法 event.stopPropagation();stop泡
      function fn1(event){
        event.stopPropagation();//阻止冒泡!!!
        alert('我是目標事件!');
      }
 
事件捕獲:由父到子的傳遞過程
 
事件捕獲和事件冒泡:
     捕獲階段
     document.body.addEventListener('click',function(){
          alert('我是body,緊隨document觸發');
          document.body.style.background='red';
     },true);
     冒泡階段
     document.body.addEventListener('click',function(){
          alert('----');
          document.body.style.background='';
     },false};
     寫在一塊兒時,最終背景無顏色變化,應註釋冒泡階段代碼
 
計算器:
     1.加法
     sum.onclick=function(){
          var v1=Number(num1.value);  //默認獲得就是字符串類型
          var v2=Number(num2.value);
          result.value=v1+v2;
     }
     2.加減乘除運算
     result.value = eval(num1.value) 把一段字符串解析成js代碼
     3.退格
     num.value=num.value. slice(0,num.value.length-1);
 
鼠標事件
     onclick: 鼠標單擊事件  使用率90%
     ondblclick: 鼠標雙擊事件
     onmousedown: 鼠標上的按鈕被按下時
     onmouseup: 鼠標按下後,鬆開時激發的事件
 
     d.onmousedown = function () {
        console.log('鼠標被按下!!');
     };
     onmouseover: 當鼠標 移動\入到某對象範圍的上方時觸發的事件 over超過,上方
     onmousemove: 鼠標移動時觸發的事件
     onmouseout: 當鼠標移出\離開某對象範圍時觸發的事件
 
把大問題分紅小問題,去解決
鼠標控制鍵盤hover特效:
   event.target  指向當前的事件元素 event.target==M true
     var array = document.getElementsByClassName('btn');
     obj.onmouseover = function (event) {
          event.target.style.color = 'red';
     obj.onmouseout = function () {
 
鍵盤事件:
     onkeypress: 當鍵盤上的某個鍵被按下並釋放時觸發事件 
          貪吃蛇:沒反應
     onkeydown: 當鍵盤上某個按鍵被 按下時觸發的事件,cl會一在直打印
     onkeyup: 當鍵盤上某個按鍵被放開時觸發的事件,按鍵鬆開時,cl打印
          貪吃蛇用此事件
     注意:頁面內必須有被聚焦的對象
      event.keyCode 返回鍵盤碼
     document.onkeypress = function(){
 
鍵盤控制運動
     var div = document.getElementById('div');
    document.onkeyup = function (event) {
        var code = event.keyCode;
        if (code == 38) {
            //往左走
            div.style.top = (div.offsetTop-100)<0?0:div.offsetTop-100 +'px';
        } else if (code == 40) {
            div.style.top = div.offsetTop+100 +'px';
        } else if (code == 37) {
            div.style.left = (div.offsetLeft-100)<0?0:div.offsetLeft-100 +'px';
        } else if (code == 39) {
            div.style.left = div.offsetLeft+100 +'px';
        }
    };
 
document . onmousemove = function ( e ){
    mov . style . left e . pageX + 'px' ;
}
全局鼠標移動,放大鏡跟着移動

 
Event對象
     1.跟特定事件相關,且包含該事件的屬性和方法的對象
     2.能夠傳遞給事件處理程序
     3.經過傳入的參數,在函數內部能夠訪問到全部的方法和屬性
     兼容性:IE8 以及如下不傳入event對象
             用window.event 作兼容
     btn.onclick = function(event){
          event=event || window.event  //使用‘或’進行兼容
       
Event對象:事件方法
     1.stopPropagation: 阻止冒泡,就是在子元素上觸發事件,不會觸發父元素的事件
          兼容性:IE8及如下,用cancelBubble代替stopPropagation
          用法:event.cancelBubble = true;
     2.preventDefault: 阻止瀏覽器默認行爲!!!如:a標籤跳轉或者表單提交
          兼容性:IE9及如下,用returnValue屬性爲false來實現
          用法:event.returnValue=false;
     實例封裝
     1.阻止冒泡
     child.onclick = function (event) {
        event = event || window.event;//使用或進行兼容
        if (event.stopPropagation) {
            event.stopPropagation();
        } else {
            event.cancelBubble = true;
     2.阻止默認行爲
     a.onclick = function (event) {
        event = event || window.event;
        if (event.preventDefault) {
            event.preventDefault();
        } else {
            event.returnValue = false;
 
Event對象屬性:4塊
     1.type: 返回事件類型,如click
     2.target: 返回事件觸發的目標元素
          兼容性:IE8及如下用 srcElement
     btn.onclick  = function (e) {
        e = e || window.event;//取IE的event對象
        var ele = e.target || e.srcElement;//取出元素,兼容IE8 srcElement
        console.log(e.type); //click
        console.log(ele); //<button id="btn">事件屬性</button>
 
   3.鼠標事件屬性
     screenX: 當前鼠標點距離屏幕左上角的水平距離
     screenY: 當前鼠標點距離屏幕左上角的垂直距離
     clientX: 當前鼠標點距離瀏覽器左上角的水平距離
     clientY: 當前鼠標點距離瀏覽器左上角的垂直距離
     pageX: 當前鼠標點距離頁面(document/body)左上角的水平距離
     pageY: 當前鼠標點距離頁面(document/body)左上角的垂直距離
     button: 獲取鼠標 點擊那個鍵 ;非IE瀏覽器中0爲鼠標左鍵,1爲鼠標中鍵,2爲鼠標右鍵
     which: 返回Unicode碼
 
     4> 鍵盤事件屬性:
        keycode : 返回鍵盤碼
        ctrlKey: 是否按下ctrl鍵,若是按了,返回true,不然返回false
        shiftKey: 是否按下shift鍵,若是按了,返回true,不然返回false
        altKey: 是否按下alt鍵,若是按了,返回true,不然返回false
 
文檔事件
     onload: 當頁面加載完成後,觸發!!在整個頁面加載完後觸發
     onresize: 當瀏覽器窗口大小被改變時,觸發!
     onscroll: 當頁面滾動的時候觸發
     onbeforeunload: 當頁面關閉或者刷新的時候觸發
          須要配合return來使用。用event.returnValue="提示信息"解決兼容性
          老的瀏覽器會把return以後的值返回,可是部分新瀏覽器只能使用默認的提示框
        window.onscroll = function () {
            console.log('文檔滾動了!!!');
      
        window.onbeforeunload = function (event) {
            event.returnValue = '你要離我而去嗎?!';
 
返回頂部
      document.body.scrollTop能夠獲取頁面滾動的高度,同時能夠賦值,更改滾動的高度       
 
表單事件:
     onfocus:當某個元素得到焦點時觸發的事件
     onblur:當前元素失去焦點時觸發的事件
     onchange:當前元素失去焦點而且元素的內容發生改變而觸發的事件
     onreset:當表單中reset的屬性被激發時觸發的事件
     onsubmit:一個表單被提交時觸發的事件
     咱們能夠的經過form表單的name屬性,獲取整個表單!!!, action="#"提交到本地,submit纔有效果
相關文章
相關標籤/搜索