官术网_书友最值得收藏!

6.1 JavaScript事件處理

6.1.1 事件與事件名稱

事件是一些可以通過(guò)腳本響應(yīng)的頁(yè)面動(dòng)作。當(dāng)用戶按下鼠標(biāo)鍵或者提交一個(gè)表單,甚至在頁(yè)面上移動(dòng)鼠標(biāo)時(shí),事件就會(huì)出現(xiàn)。事件處理是一段JavaScript代碼,總是與頁(yè)面中的特定部分以及一定的事件相關(guān)聯(lián)。當(dāng)與頁(yè)面特定部分關(guān)聯(lián)的事件發(fā)生時(shí),事件處理器就會(huì)被調(diào)用。

絕大多數(shù)事件的命名都是描述性的,很容易理解。例如click、submit、mouseover等,通過(guò)名稱就可以猜測(cè)其含義。但也有少數(shù)事件的名稱不易理解,例如blur(英文的字面意思為“模糊”),表示一個(gè)域或者一個(gè)表單失去焦點(diǎn)。通常,事件處理器的命名原則是,在事件名稱前加上前綴on。例如,對(duì)于click事件,其處理器名為onClick。

6.1.2 JavaScript的常用事件

為了便于讀者查找JavaScript中的常用事件,下面以表格的形式對(duì)各事件進(jìn)行說(shuō)明。JavaScript的相關(guān)事件如表6.1所示。

表6.1 JavaScript的相關(guān)事件

續(xù)表

續(xù)表

【例6.1】在頁(yè)面中單擊某個(gè)位置,會(huì)彈出對(duì)話框,顯示被觸發(fā)的事件類型。(實(shí)例位置:光盤\TM\sl\6\1)

(1)創(chuàng)建一個(gè)名稱為index.html的文件。

(2)在頁(yè)面的<body>標(biāo)記中,定義onmousedown事件的處理函數(shù)為getEventType(),參數(shù)event是Event對(duì)象。具體代碼如下:

        <body onmousedown="getEventType(event)">
        <h3 class="title">JavaScript事件類型</h3>
        <p>在頁(yè)面中單擊某個(gè)位置,會(huì)彈出對(duì)話框,顯示被觸發(fā)的事件類型。</p>
        </body>

(3)在頁(yè)面的<head>標(biāo)記內(nèi),編寫getEventType()函數(shù),調(diào)用alert()方法顯示event.type屬性,代碼如下:

        <script type="text/javascript">
         function getEventType(){
            alert(event.type);    //彈出提示框,顯示事件類型
         }
        </script>

運(yùn)行本實(shí)例,單擊頁(yè)面主體位置,運(yùn)行結(jié)果如圖6.1所示。

圖6.1 彈出事件類型提示框

6.1.3 event對(duì)象

JavaScript的event對(duì)象用來(lái)描述JavaScript的事件,它主要作用于IE和NN4以后的各個(gè)瀏覽器版本中。event對(duì)象代表事件狀態(tài),如事件發(fā)生的元素、鍵盤狀態(tài)、鼠標(biāo)位置和鼠標(biāo)按鈕狀態(tài)。一旦事件發(fā)生,便會(huì)生成event對(duì)象,如單擊一個(gè)按鈕,瀏覽器的內(nèi)存中就產(chǎn)生相應(yīng)的event對(duì)象。

event對(duì)象具有以下屬性。

(1)altLeft屬性

用于設(shè)置或獲取左Alt鍵的狀態(tài)。檢索左Alt鍵的當(dāng)前狀態(tài),返回值true表示關(guān)閉,false為不關(guān)閉。

語(yǔ)法:

        [window.]event. altLeft

由于altLeft屬性是boolean值,因此可以將該屬性應(yīng)用到if語(yǔ)句中,根據(jù)獲取的值不同而執(zhí)行不同的操作。

(2)ctrlLeft屬性

用于設(shè)置或獲取左Ctrl鍵的狀態(tài)。檢索左Ctrl鍵的當(dāng)前狀態(tài),返回值true表示關(guān)閉,false為不關(guān)閉。

語(yǔ)法:

        [window.]event. ctrlLeft

由于ctrlLeft屬性是boolean值,因此可以將該屬性應(yīng)用到if語(yǔ)句中,根據(jù)獲取的值不同而執(zhí)行不同的操作。

(3)shiftLeft屬性

用于設(shè)置或獲取左Shift鍵的狀態(tài)。檢索左Shift鍵的當(dāng)前狀態(tài),返回值true表示關(guān)閉,false為不關(guān)閉。

語(yǔ)法:

        [window.]event. shiftLeft

由于這3個(gè)屬性的值同樣也都是boolean類型的,所以也可以將它們組合成一個(gè)條件在if語(yǔ)句中應(yīng)用,并且也可以和altKey、ctrlKey和shiftKey屬性同時(shí)使用。

(4)button屬性

用于設(shè)置或獲取事件發(fā)生時(shí)用戶所單擊的鼠標(biāo)鍵。

語(yǔ)法:

        [window.]event.button

該屬性的值如表6.2所示。

表6.2 button屬性的值和說(shuō)明

當(dāng)用戶按下多個(gè)鍵時(shí),每次按鍵都激活一個(gè)onmousedown事件。如果用戶首先單擊左鍵,則onmousedown事件激活,event.button屬性值為1;如果此時(shí)單擊右鍵,那么onmousedown事件再次發(fā)生,但event.button屬性值為3。如果腳本同時(shí)按下兩個(gè)按鍵執(zhí)行特殊動(dòng)作,那么就應(yīng)該忽略單一按鍵動(dòng)作,因?yàn)樵谔幚磉^(guò)程中很可能激活單鍵事件,從而干擾目標(biāo)行為。

注意

button屬性僅用于onmousedown、onmouseup和onmousemove事件。對(duì)于其他事件,無(wú)論鼠標(biāo)狀態(tài)如何,都返回0(例如:onclick)。

(5)clientX屬性

用于獲取鼠標(biāo)在瀏覽器窗口中的X坐標(biāo),該屬性是一個(gè)只讀屬性,即只能獲取到鼠標(biāo)的當(dāng)前位置,不能改變鼠標(biāo)的位置。

語(yǔ)法:

        [window.]event. clientX

(6)clientY屬性

用于獲取鼠標(biāo)在瀏覽器窗口中的Y坐標(biāo),該屬性是一個(gè)只讀屬性,即只能獲取到鼠標(biāo)的當(dāng)前位置,不能改變鼠標(biāo)的位置。

語(yǔ)法:

        [window.]event. clientY

(7)X屬性

用于設(shè)置或獲取鼠標(biāo)指針位置相對(duì)于CSS屬性中有position屬性的上級(jí)元素的X軸坐標(biāo)。如果沒(méi)有CSS屬性中有position屬性的上級(jí)元素,默認(rèn)以body元素作為參考對(duì)象。

語(yǔ)法:

        [window.]event. X

如果鼠標(biāo)事件觸發(fā)后,鼠標(biāo)移出窗口外,則返回的值為-1。這是個(gè)只讀屬性,只能通過(guò)它獲取鼠標(biāo)的當(dāng)前位置,卻不能用它來(lái)更改鼠標(biāo)的位置。

(8)Y屬性

用于設(shè)置或獲取鼠標(biāo)指針位置相對(duì)于CSS屬性中有position屬性的上級(jí)元素的Y軸坐標(biāo)。如果沒(méi)有CSS屬性中有position屬性的上級(jí)元素,默認(rèn)以body元素作為參考對(duì)象。

語(yǔ)法:

        [window.]event. Y

如果鼠標(biāo)事件觸發(fā)后,鼠標(biāo)移出窗口外,則返回的值為-1。這是個(gè)只讀屬性,只能通過(guò)它獲取鼠標(biāo)的當(dāng)前位置,卻不能用它來(lái)更改鼠標(biāo)的位置。

(9)cancelBubble屬性

用于檢測(cè)是否接受上層元素的事件的控制。如果該屬性的值是false,則允許被上層元素的事件控制;否則值為true,不被上層元素的事件控制。

語(yǔ)法:

        [window.] event.cancelBubble[ = cancelBubble]

該屬性的值是一個(gè)可讀寫的布爾值,默認(rèn)值是false。

(10)srcElement屬性

用于設(shè)置或獲取觸發(fā)事件的對(duì)象。srcElement屬性是事件初始目標(biāo)的HTML元素對(duì)象引用。由于事件通過(guò)元素容器層次氣泡,可以在任何一個(gè)層次進(jìn)行處理,因此由一個(gè)屬性指向產(chǎn)生初始事件的元素是很有幫助的。

語(yǔ)法:

        [window.]event. srcElement

通過(guò)該屬性可以讀、寫屬于該元素的屬性,并調(diào)用它的任何方法。

【例6.2】將altKey、ctrlKey和shiftKey屬性進(jìn)行組合,組成一個(gè)綜合的條件,應(yīng)用if語(yǔ)句判斷當(dāng)Ctrl鍵、Shift鍵和Alt鍵同時(shí)被按下時(shí)執(zhí)行一個(gè)操作。(實(shí)例位置:光盤\TM\sl\6\2)

(1)創(chuàng)建一個(gè)名稱為index.html的文件。

(2)在頁(yè)面的<head>標(biāo)記內(nèi),編寫example ()函數(shù),判斷Ctrl、Shift和Alt按鍵是否被同時(shí)按下,如果同時(shí)按下,則彈出提示對(duì)話框并且將頁(yè)面跳轉(zhuǎn)至index_ok.html文件。令用戶按下鍵盤按鍵時(shí)調(diào)用example ()函數(shù),代碼如下:

        <script>
        function example(){              //創(chuàng)建自定義函數(shù)
            //應(yīng)用if語(yǔ)句判斷Ctrl鍵、Shift鍵和Alt鍵是否同時(shí)被按下
            if(window.event.ctrlKey && window.event.altKey && window.event.shiftKey){
                //如果Ctrl鍵、Shift鍵和Alt鍵同時(shí)被按下,則執(zhí)行下面的內(nèi)容
                alert(’明日科技,給您拜年了!');             //彈出一個(gè)對(duì)話框
                window.location.href='index_ok.html';   //連接到一個(gè)文件
            }
        }
        document.onkeydown=example;            //應(yīng)用onkeydown事件輸出自定義函數(shù)example中的內(nèi)容
        </script>

運(yùn)行本實(shí)例,單擊頁(yè)面主體位置,運(yùn)行結(jié)果如圖6.2所示。

圖6.2 altKey、ctrlKey和shiftKey屬性的綜合應(yīng)用

主站蜘蛛池模板: 汾阳市| 兴宁市| 六盘水市| 信丰县| 雷山县| 深州市| 乐东| 治县。| 台南市| 安义县| 东阿县| 浪卡子县| 永福县| 思茅市| 黔西县| 大兴区| 历史| 玉树县| 和政县| 保山市| 色达县| 永和县| 通江县| 固始县| 瑞昌市| 保定市| 时尚| 呼图壁县| 巴青县| 郯城县| 锡林浩特市| 盘锦市| 偏关县| 布尔津县| 洪江市| 滦平县| 新泰市| 屏东县| 什邡市| 高邑县| 定远县|