JavaScript 使用方向鍵移動(dòng)對(duì)象
■知識(shí)點(diǎn)
keyCode和charCode屬性在實(shí)際開(kāi)發(fā)中比較常用,在不同事件類(lèi)型和不同瀏覽器中的表現(xiàn)如表所示。
屬 性 | 舊事件模型 | DOM事件模型 |
keyCode (keypress) | 返回所有字符鍵的正確值,區(qū)分大寫(xiě)狀態(tài) (65-90)和小寫(xiě)狀態(tài)(97~122) | 功能鍵返回正確值,而Shift、Ctrl、Alt、PrintScreen、 ScrollLock無(wú)返回值,其他所有鍵值都返回0 |
keyCode (keydown) | 返回所有鍵值(除PrintScreen鍵),字母鍵都 以大寫(xiě)狀態(tài)顯示鍵值(65~90) | 返回所有鍵值(除PrintScreen鍵),字母鍵都以大 寫(xiě)狀態(tài)顯示鍵值(65~90) |
keyCode (keyup) | 返回所有鍵值(除PrintScreen鍵),字母鍵都 以大寫(xiě)狀態(tài)顯示鍵值(65~90) | 返回所有鍵值(除PrintScreen鍵),字母鍵都以大 寫(xiě)狀態(tài)顯示鍵值(65?90) |
charCode (keypress) | 不支持該屬性 | 返回字符鍵,區(qū)分大寫(xiě)狀態(tài)(65~90)和小寫(xiě)狀態(tài) (97?122),Shift、Ctrl、Alt、PrintScreen> ScrollLock 鍵無(wú)返回值,其他所有鍵值為0 |
charCode (keydown) | 不支持該屬性 | 所有鍵值為0 |
charCode (keyup) | 不支持該屬性 | 所有鍵值為0 |
鍵 位 | 碼 值 | 鍵 位 | 碼 值 |
0?9 (數(shù)字鍵) | 48-57 | A-Z (字母鍵) | 65?90 |
Backspace (退格鍵) | 8 | Tab (制表鍵) | 9 |
Enter (回車(chē)鍵) | 13 | Space (空格鍵) | 32 |
Left arrow (左箭頭鍵) | 37 | Top arrow (上箭頭鍵) | 38 |
Right arrow (右箭頭鍵) | 39 | Down arrow (下箭頭鍵) | 40 |
■實(shí)例設(shè)計(jì)
本例設(shè)計(jì)如何使用方向鍵控制對(duì)象的移動(dòng)效果。首先獲取頁(yè)面元素,通過(guò)CSS腳本控制元素的絕對(duì)定位、大小和背景色,然后在document對(duì)象上注冊(cè)鼠標(biāo)按下事件類(lèi)型處理函數(shù),在事件回調(diào)函數(shù)keyDown()中偵測(cè)當(dāng)前按下的方向鍵,并決定定位元素在窗口中的位置。其中,元素offsetLeft和 offsetTop屬性可以存取它在頁(yè)面中的位置。
<div id="box"></div>
<script>
var box = document.getEiementByid("box");
box.style.position = "iabsolute";
box.style.width = "20px";
box.style.height = "20px"; '
box.style.backgroundColor = "red";
document.onkeydown = keyDown; //注冊(cè)keyDown事件處理函數(shù)
function keyDown (event){ //方向鍵控制元素移動(dòng)函數(shù)
var event = event |丨 window.event; //標(biāo)準(zhǔn)化事件對(duì)象
switch(event.keyCode){ //獲取當(dāng)前按下鍵盤(pán)鍵的編碼
case 37 : //按下左箭頭鍵,向左移動(dòng)5個(gè)像素
box.style.left = box.offsetLeft - 5 + "px";
break;
case 39 : //按下右箭頭鍵,向右移動(dòng)5個(gè)像素
box.style.left = box.offsetLeft + 5 + "px";
break;
case 38 : //按下上箭頭鍵,向上移動(dòng)5個(gè)像素
box.style.top = box.offsetTop - 5 + "px";
break;
case 40 : //按下下箭頭鍵,向下移動(dòng)5個(gè)像素
box.style.top = box.offsetTop + 5 + "px";
break;
}
return false
}
</script>
點(diǎn)擊加載更多評(píng)論>>