亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JavaScript事件類型怎么使用

發布時間:2021-12-08 16:04:40 來源:億速云 閱讀:179 作者:iii 欄目:web開發

本篇內容介紹了“JavaScript事件類型怎么使用”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!

在JavaScript中,事件類型指的是事件的觸發方式,簡單理解就是觸發了什么事件;事件類型有:UI事件、焦點事件、鼠標與滾輪事件、鍵盤與文本事件、復合事件、變動事件、HTML5事件、設備事件、觸摸與手勢事件等。

本教程操作環境:windows7系統、javascript1.8.5版、Dell G3電腦。

事件是指可以被JavaScript偵測到的行為,是一種“觸發-響應”的機制。這些行為指的就是頁面的加載、鼠標的單擊/雙擊、鼠標指針滑某個區域等具體的動作,它對實現頁面的交互效果起著非常重要的作用。

事件由事件源、事件類型和事件處理程序3部分構成,又被稱為“事件三要素”。

  • 事件源:觸發(被)事件的元素

  • 事件類型:事件的觸發方式(例如鼠標點擊或鍵盤點擊)

  • 事件處理程序:事件觸發后要執行的代碼(函數形式)

以上的三個要素可以簡單理解為“誰觸發了事件”、“觸發了什么事件”、“觸發了事件之后要做什么”。

Web瀏覽器中可能發生的事件有很多類型。這里我將主要將下面幾種常用的事件類型:

  • UI事件

  • 焦點事件

  • 鼠標與滾輪事件

  • 鍵盤與文本事件

  • 復合事件

  • 變動事件

  • HTML5事件

  • 設備事件

  • 觸摸與手勢事件

第一部分:UI事件

  UI事件中UI即(User Interface,用戶界面),當用戶與頁面桑拿的元素交互時觸發。

  UI事件中主要包括load,unload,abort,error,select,resize,scroll事件。

1.load事件

   此事件為當頁面完全加載完之后(包括所有的圖像、js文件、css文件等外部資源),就會觸發window上面的load事件。

   這個事件是JavaScript中最常用的事件,比如我們經常會使用window.onload=function(){};這種形式,即當頁面完全加載完之后執行其中的函數。

     另外,之前一直都不知道,這個事件還可以用在其他元素上,比如圖像元素,如下所示:

<img src="smile.png" onload="alert('loaded')">  

   即當圖片完全加載出來之后會有彈窗。當然也可以使用JS來實現,如下所示:

var img=document.getElementById("img");
EventUtil.addHandler(img,"load",function(){
      event=EventUtil.getEvent(event);
      alert(EventUtil.getTarget(event).src);
});

2.unload事件

   顯然,這個事件是與load事件相對的。在文檔被完全卸載后觸發。用戶從一個頁面切換到另一個頁面就會觸發unload時間。利用這個事件最多的情況是清楚引用,避免內存泄漏。

   這個事件同樣有兩種方式來指定。一種是JavaScript方式,使用EventUtil.addHandler();另一種就是在body元素中添加一個特性。

     值得注意的是,一定要小心編寫onload事件中的代碼,因為它是在頁面卸載后才觸發,所以說頁面加載后存在的那些對象,在onload觸發之后就不一定存在了!

<body onload="alert('changed')">

3.resize事件

    當調整瀏覽器的窗口到一個新的寬度或高度時,就會觸發resize事件。這個事件在window(窗口)上面觸發。因此同樣可以通過JS或者body元素中的onresize特性來指定處理程序。  

<body onresize="alert('changed')">

    寫了這句代碼,那么瀏覽器的大小發生改變時就會彈出窗口。

4.scroll事件

  這個事件會在文檔被滾動期間重復被觸發,所以應當盡量保持事件處理程序的代碼簡單。

第二部分:焦點事件

  焦點事件會在頁面元素獲得或失去焦點時觸發。主要有下面幾種:

  • blur   在元素失去焦點時觸發。這個事件不冒泡,所有瀏覽器都支持。

  • focus   在元素獲得焦點時觸發。這個事件不冒泡,所有瀏覽器都支持。

  • focusin  在元素獲得焦點時觸發。這個事件冒泡,某些瀏覽器不支持。

  • focusout 在元素失去焦點時觸發。這個事件冒泡,某些瀏覽器不支持。

  注意:即使blur和focus不冒泡,也可以在捕獲階段偵聽到他們。

第三部分:鼠標與滾輪事件

  鼠標事件是Web開發中最常用的一類事件,因為鼠標是最主要的定位設備。

  • click---用戶單擊鼠標左鍵或按下回車鍵觸發

  • dbclick---用戶雙擊鼠標左鍵觸發。

  • mousedown---在用戶按下了任意鼠標按鈕時觸發。

  • mouseenter---在鼠標光標從元素外部首次移動到元素范圍內時觸發。此事件不冒泡

  • mouseleave---元素上方的光標移動到元素范圍之外時觸發。不冒泡

  • mousemove---光標在元素的內部不斷的移動時觸發。

  • mouseover---鼠標指針位于一個元素外部,然后用戶將首次移動到另一個元素邊界之內時觸發。

  • mouseout---用戶將光標從一個元素上方移動到另一個元素時觸發。

  • mouseup---在用戶釋放鼠標按鈕時觸發。

  注意到:上述所有事件除了mouseenter和mouseleave外都冒泡。

  重要:只有在同一個元素上相繼觸發mousedown和mouseup事件,才會觸發click事件。同樣,只有在同一個元素上觸發兩次click事件,才會觸發dbclick事件。

  dbclick事件的產生過程如下:

  • mousedown

  • mouseup

  • click

  • mousedown

  • mouseup

  • click

  • dbclick

  上面介紹了有關鼠標的事件,下面介紹一些對于鼠標光標的位置:客戶區坐標位置、頁面坐標位置、屏幕坐標位置

一、客戶區坐標位置

  通過客戶區坐標可以知道鼠標是在視口中什么位置發生的。

  clientX和clientY分別表示鼠標點擊的位置。以body的左上角為原點,向右為X的正方向,向下為Y的正方向。這兩個都是event的屬性。舉例如下:

    <button id="clickMe">點我</button>
    <script>
        var button=document.getElementById("clickMe");
        button.onclick=function(event){
            alert(event.clientY+""+event.clientX);
        };    
     </script>

  當我點擊按鈕的左上角時,顯示為00。效果如下:

JavaScript事件類型怎么使用

二.頁面坐標位置

  和客戶區坐標位置不同,頁面坐標位置表示鼠標光標在頁面而非視口中的位置。因此坐標是從頁面本身而非視口的左邊和頂邊計算的。如果前面的話不能很好的理解,接著看這里:在頁面沒有滾動的情況下,頁面坐標位置和客戶區坐標位置是相同的。

  頁面坐標

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>頁面坐標位置</title>
    <style>
        *{
            margin:0;
            padding:0;
        }
        p{
            width: 800px;
            height: 1200px;            /*我的電腦的視口高度為960px;*/
            background: #ccc;
        }    </style>
</head>
<body>
    <p></p>
    <button id="button"> 點擊我</button>
    <script>        
    var button=document.getElementById("button");
        button.onclick=function(){
            alert("pageX為"+event.pageX+"pageY為"+event.pageY);
        };    </script>
</body>
</html>

在上面的例子中,我把p的高設置為了1200px;而我的瀏覽器視口高度為960px;所以一定需要滾動我們才能點擊按鈕,最終得到的結果是:pageX為13pageY為1210。

然而IE8及更早的瀏覽器是不支持事件對象上的頁面坐標的,即不能通過pageX和pageY來獲得頁面坐標,這時需要使用客戶區坐標和滾動信息來計算了。而滾動信息需要使用document.body(混雜模式)、document.documentElement(標準模式)中的scrollLeft和scrollTop屬性。舉例如下:

    <button id="button"> 點擊我</button>
    <script>        var button=document.getElementById("button");
        button.onclick=function(){            
        var pageX=event.clientX+(document.body.scrollLeft||document.documentElement.scrollLeft);           
         var pageY=event.clientY+(document.body.scrollRight||document.documentElement.scrollRight);
            alert("pageX為"+pageX+"pageY為"+pageY);
        };    
      </script>

此例子在IE瀏覽器下可得到同樣結果。

三.屏幕坐標位置

  與前兩者又有所不同,鼠標事件發生時,還有一個光標相對于整個電腦屏幕的位置。通過screenX和screenY屬性就可以確定鼠標事件發生時鼠標指針相對于整個屏幕的位置。舉例如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>頁面坐標位置</title>
    <style>
        *{
            margin:0;
            padding:0;
        }    </style>
</head>
<body>
    <button id="button"> 點擊我</button>
    <script>        
    var button=document.getElementById("button");
        button.onclick=function(){
            alert("X為:"+event.screenX+"Y為:"+event.screenY);
        };    
      </script>
</body>
</html>

最終的結果如下:

JavaScript事件類型怎么使用

顯然screenX和screenY是相對于屏幕的左方和上方的。

四.修改鍵

  當點擊某個元素時,如果我們同時按下了ctrl鍵,那么事件對象的ctrlKey屬性值將為true,否則為false,對于alt、shift、meta(windows鍵盤的windows鍵、蘋果機的Cmd鍵)的事件屬性altKey、shiftKey、metaKey同樣如此。下面舉例如下:

    <button id="button"> 點擊我</button>
    <script>        
    var button=document.getElementById("button");
        button.onclick=function(){            
        var array=new Array();            
        if(event.shiftKey){
                array.push("shift");
            }            if(event.ctrlKey){
                array.push("ctrl");
            }            if(event.altKey){
                array.push("alt");
            }            if(event.metaKey){
                array.push("meta");
            }
            alert(array.join(","));
        };    
      </script>

這個例子中,我首先創建了一個array數組,接著如果我按下了那幾個鍵,就會存入相應的名稱。這里我同時按下了四個鍵,結果如下:

JavaScript事件類型怎么使用

即最終將數組中的四個值拼接成了字符串顯示出來。

七、鼠標滾輪事件

    <script>
        document.onmousewheel=function(){
            alert(event.wheelDelta);
        };    
     </script>

當我向下滾動滾輪時,效果如下:

JavaScript事件類型怎么使用

第四部分:鍵盤和文本事件

  該部分主要有下面幾種事件:

  • keydown:當用戶按下鍵盤上的任意鍵時觸發。按住不放,會重復觸發。

  • keypress:當用戶按下鍵盤上的字符鍵時觸發。按住不放,會重復觸發。

  • keyup:當用戶釋放鍵盤上的鍵時觸發。

  • textInput:這是唯一的文本事件,用意是將文本顯示給用戶之前更容易攔截文本。

  這幾個事件在用戶通過文本框輸入文本時才最常用到。

  鍵盤事件:

    document.addEventListener("keydown",handleKeyDownClick,false);

        function handleKeyDownClick(event) {            
        var e = event||window.event||arguments.callee.caller.arguments[0];            
        if (e&&e.keyCode == 13) {
                alert("keydown");
            }
        }

“JavaScript事件類型怎么使用”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識可以關注億速云網站,小編將為大家輸出更多高質量的實用文章!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

永康市| 牟定县| 沐川县| 和林格尔县| 贵溪市| 五大连池市| 顺昌县| 永年县| 皋兰县| 甘德县| 濮阳县| 漳州市| 略阳县| 金华市| 岑巩县| 隆化县| 郁南县| 疏勒县| 扬州市| 石首市| 电白县| 探索| 乌兰察布市| 麻阳| 府谷县| 商洛市| 类乌齐县| 宜兰县| 天镇县| 乐亭县| 搜索| 青铜峡市| 巴楚县| 新蔡县| 繁昌县| 锡林浩特市| 鄂温| 广水市| 丰原市| 延津县| 苏尼特右旗|