国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

聊聊DOM中很重要的一個(gè)知識點(diǎn):事件

church / 2410人閱讀

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

事件

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

事件的類型

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

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

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

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

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

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

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

注冊事件

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

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

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

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

綁定事件

HTML頁面與JavaScript相結(jié)合實(shí)現(xiàn)的事件綁定,缺點(diǎn)是沒有實(shí)現(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:
當(dāng)使用addEventListener()方法為某個(gè)HTML頁面元素注冊事件的時(shí)候,this就指代注冊事件的元素
當(dāng)使用attachEvent()方法為某個(gè)HTML頁面元素注冊事件的時(shí)候,this指代的是window對象,而不是注冊事件的元素
由于addEventListener()方法中的this與attachEvent()方法中的this的含義不同,我們需要將監(jiān)聽器的瀏覽器兼容方案進(jì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ù)(同一個(gè)函數(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ù)(同一個(gè)函數(shù))*/
移除注冊事件

事件對象是作為window對象的屬性出現(xiàn)
事件對象:事件的處理函數(shù)中接收一個(gè)參數(shù)
Event事件對象:作為所有事件對象的父級
1.MouseEvent事件對象:表示鼠標(biāo)事件
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){
    //獲取目標(biāo)元素
    var btn=event.target;
    //阻止默認(rèn)行為
    event.preventDefault();
})

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

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

pageX,pageY:鼠標(biāo)坐標(biāo)值相對于當(dāng)前HTML頁面

clientX,clientY:鼠標(biāo)坐標(biāo)值相對于當(dāng)前可視窗口

screenX,screenY:鼠標(biāo)坐標(biāo)值相對于當(dāng)前屏幕的

CSS代碼

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

JavaScript代碼

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

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

1 - 表示鼠標(biāo)滾輪
2 - 表示鼠標(biāo)右鍵
鍵盤事件

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

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

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

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

相關(guān)文章

  • 深入React識點(diǎn)整理(一)

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

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

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

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

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

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

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

    cuieney 評論0 收藏0

發(fā)表評論

0條評論

最新活動(dòng)
閱讀需要支付1元查看
<