成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

聊聊DOM中很重要的一個知識點:事件

church / 2455人閱讀

摘要:事件事件就是瀏覽器告知程序,用戶的行為,用戶點擊了頁面中的某個按鈕或者用戶輸入用戶名或密碼等操作可以稱為事件事件的類型事件根據(jù)使用的場景不同,可以分為如下幾種依賴于設(shè)備的輸入事件鍵盤事件和鼠標事件,這些事件都是直接和設(shè)備相關(guān)的獨立于設(shè)備的輸

事件

事件就是瀏覽器告知JavaScript程序,用戶的行為,用戶點擊了HTML頁面中的某個按鈕或者用戶輸入用戶名或密碼等操作可以稱為事件

事件的類型

事件根據(jù)使用的場景不同,可以分為如下幾種:

依賴于設(shè)備的輸入事件:鍵盤事件和鼠標事件,這些事件都是直接和設(shè)備相關(guān)的

獨立于設(shè)備的輸入事件:例如click事件等,這些事件并沒有直接與設(shè)備相關(guān)

用戶界面的相關(guān)事件:用戶界面事件較高級的事件,一般多用于表單中的組件

狀態(tài)變化的相關(guān)事件:這些事件與用戶行為無關(guān),而是網(wǎng)絡(luò)或瀏覽器觸發(fā)的

特定API事件:這些事件多用于特定場景的實現(xiàn),例如HTML5中提供的拖放API中的事件等

與錯誤處理的相關(guān)事件

注冊事件

注冊事件,就是將JavaScript函數(shù)與指定事件相關(guān)聯(lián),被綁定的函數(shù)成為該事件的句柄,事件被觸發(fā)時,綁定的函數(shù)會被調(diào)用
注冊事件具有以下三種方式實現(xiàn):

HTML頁面元素提供的事件屬性

DOM標準規(guī)范中HTML相關(guān)對象提供的事件屬性

通過向HTML頁面中指定元素添加事件監(jiān)聽器

綁定事件

HTML頁面與JavaScript相結(jié)合實現(xiàn)的事件綁定,缺點是沒有實現(xiàn)HTM與JavaScript的分離

HTML代碼:

JavaScript代碼:

var btn=document.getElementById("btn");
function myClick(){
    console.log("this is event");
}

在JavaScript綁定事件

HTML代碼

   

JavaScript代碼

var btn=document.getElementById("btn");
btn.onclick=function(){
    console.log("this is event");
}

用addEventListener(eventName,callback)

參數(shù):
eventName:表示綁定的事件名稱,注意沒有on
callback:表示事件的處理函數(shù)(回調(diào)函數(shù))
允許為相同元素綁定相同事件多次
html代碼

JavaScript代碼

var btn=document.getElementsByClassName("btn")[0];
btn.addEventListener("click",function(){
    console.log("this is event");
});

關(guān)于事件監(jiān)聽器中的this:
當使用addEventListener()方法為某個HTML頁面元素注冊事件的時候,this就指代注冊事件的元素
當使用attachEvent()方法為某個HTML頁面元素注冊事件的時候,this指代的是window對象,而不是注冊事件的元素
由于addEventListener()方法中的this與attachEvent()方法中的this的含義不同,我們需要將監(jiān)聽器的瀏覽器兼容方案進行優(yōu)化

//對于IE 8以下版本的this優(yōu)化
function bind(elem,event,callback){
    //判斷是否存在 addEventListener
    if(elem.addEventListener){
        elem.addEventListener(event,callback,false);
    }else{
        elem.attachEvent("on"+event,function(){
            //將this的指向修改為注冊事件的元素
            callback.call(elem);
        });
    }
}
移除注冊事件以及事件對象Event的用法

removeEventListener(eventName,functionName)方法
參數(shù):
eventName:表示移除的事件名稱
functionName:表示事件的處理函數(shù)
必須是注冊事件的處理函數(shù)(同一個函數(shù))

HTML代碼

    

JavaScript代碼

var btn=document.getElementById("d1");
function myClick(){
    console.log("this is event");
}
btn.addEventListener("click",myClick);
//元素.removeEventListener(事件名稱,處理函數(shù));
btn.removeEventListener("click",myClick);

/*IE 8以下版本瀏覽器不支持removeEventListener()方法
detachEvent(eventName,functionName)
eventName:表示移除的事件名稱(必須有on)
functionName:表示事件的處理函數(shù)
必須是注冊事件時處理函數(shù)(同一個函數(shù))*/
移除注冊事件

事件對象是作為window對象的屬性出現(xiàn)
事件對象:事件的處理函數(shù)中接收一個參數(shù)
Event事件對象:作為所有事件對象的父級
1.MouseEvent事件對象:表示鼠標事件
2.KeyboardEvent事件對象:表示鍵盤事件
3.TouchEvent事件對象:表示觸摸事件

IE 8以下版本瀏覽器提供的添加事件監(jiān)聽器方法:事件對象是作為window對象的屬性出現(xiàn):window.event

html代碼

JavaScript代碼

var btn=document.getElementById("btn");
//第一種方法:元素.addEventListener(事件名,function(事件對象Event){});
btn.addEventListener("click",function(event){
    //獲取目標元素
    var btn=event.target;
    //阻止默認行為
    event.preventDefault();
})

//第二鐘方法:元素名.onclick=function(事件對象Event)
btn.onclick=function(event){
//關(guān)于IE 8的阻止默認行為的方法與其他瀏覽器不同
     var e=event || window.event;
     //IE 8以下的阻止默認行為
     e.returnValue=false;
}
獲取鼠標坐標值

以下只能獲取,不能設(shè)置

pageX,pageY:鼠標坐標值相對于當前HTML頁面

clientX,clientY:鼠標坐標值相對于當前可視窗口

screenX,screenY:鼠標坐標值相對于當前屏幕的

CSS代碼

//為了測試鼠標坐標值,直接把body的高度設(shè)置2000像素
body{height:2000px}

JavaScript代碼

var html=document.documentElement;
html.addEventListener("click",function(event){
    //鼠標坐標值相對于當前HTML頁面
    console.log(event.pageX,event.pageY);
    //鼠標坐標值相對于當前可視區(qū)域
    console.log(event.clientX,event.clientY);
    //鼠標坐標值相對于當前屏幕的
    console.log(event.screenX,event.screenY);
});
鼠標事件

click事件:表示鼠標點擊事件(鼠標左鍵)
mousedown事件:表示鼠標按鍵被按下事件
mouseup事件:表示鼠標按鍵被釋放事件
event事件對象提供了button屬性
作用:用于表示鼠標按鍵
值:0 - 表示鼠標左鍵

1 - 表示鼠標滾輪
2 - 表示鼠標右鍵
鍵盤事件

keydown事件:表示鍵盤按鍵被按下
keyup事件:表示鍵盤按鍵被釋放
keypress事件:表示鍵盤按鍵按一下

event事件對象
code:獲取當前按鍵的名稱
key:獲取當前按鍵的名稱
keyCode:獲取當前按鍵對應(yīng)的Unicode碼

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.hztianpu.com/yun/97343.html

相關(guān)文章

  • 深入React識點整理(一)

    摘要:以我自己的理解,函數(shù)式編程就是以函數(shù)為中心,將大段過程拆成一個個函數(shù),組合嵌套使用。越來越多的跡象表明,函數(shù)式編程已經(jīng)不再是學(xué)術(shù)界的最愛,開始大踏步地在業(yè)界投入實用。也許繼面向?qū)ο缶幊讨?,函?shù)式編程會成為下一個編程的主流范式。 使用React也滿一年了,從剛剛會使用到逐漸探究其底層實現(xiàn),以便學(xué)習(xí)幾招奇技淫巧從而在自己的代碼中使用,寫出高效的代碼。下面整理一些知識點,算是React看書...

    Gilbertat 評論0 收藏0
  • 前端練級攻略(第二部分)

    摘要:是文檔的一種表示結(jié)構(gòu)。這些任務(wù)大部分都是基于它。這個實踐的重點是把你在前端練級攻略第部分中學(xué)到的一些東西和結(jié)合起來。一旦你進入框架部分,你將更好地理解并使用它們。到目前為止,你一直在使用進行操作。它是在前端系統(tǒng)像今天這樣復(fù)雜之前編寫的。 本文是 前端練級攻略 第二部分,第一部分請看下面: 前端練級攻略(第一部分) 在第二部分,我們將重點學(xué)習(xí) JavaScript 作為一種獨立的語言,如...

    BWrong 評論0 收藏0
  • 泡杯茶,我們坐下聊聊Javascript事件環(huán)

    摘要:是怎么執(zhí)行的一開始先簡單聊了聊基本的數(shù)據(jù)結(jié)構(gòu),它和我們現(xiàn)在說的事件環(huán)有什么關(guān)系么當然有,首先要明確的一點是,代碼的執(zhí)行全都在棧里,不論是同步代碼還是異步代碼,這個一定要清楚。 棧和隊列 在計算機內(nèi)存中存取數(shù)據(jù),基本的數(shù)據(jù)結(jié)構(gòu)分為棧和隊列。 棧(Stack)是一種后進先出的數(shù)據(jù)結(jié)構(gòu),注意,有時候也管棧叫做堆棧,但是堆又是另一種復(fù)雜的數(shù)據(jù)結(jié)構(gòu),它和棧完全是兩碼事。棧的特點是操作只在一端進行...

    douzifly 評論0 收藏0
  • vue總結(jié)系列--組件化

    摘要:觸發(fā)事件可以攜帶數(shù)據(jù),這些數(shù)據(jù)被用于傳遞給綁定了事件的其它組件的回調(diào)函數(shù)上,進而被傳遞給其它組件。父組件可以在回調(diào)函數(shù)里做任何事情,頗有靈活性。一般情況下,父組件會在回調(diào)函數(shù)中更新自己的狀態(tài)數(shù)據(jù)。 上一篇博文梳理了vue的數(shù)據(jù)驅(qū)動和響應(yīng)式相關(guān)的特性,這一篇博文就來梳理vue的一個很重要的特性,組件化。自定義組件之于vue,其意義不亞于函數(shù)之于C,java之類的編程語言。函數(shù)是計算機科學(xué)...

    cuieney 評論0 收藏0

發(fā)表評論

0條評論

閱讀需要支付1元查看
<