在JSP的頁面上可以通過javascript來截獲鍵盤的按鍵事件

來源:互聯網
上載者:User
js|頁面 頁面中的鍵盤控制

Capturing Keystrokes
相應敲擊鍵是電腦和人的基本相互作用。你可以控制任何一個鍵的按下和鬆開。首先我們先要
知道如何啟動一個所謂的事件 (event). 下面是啟動一個把鍵按下的"onkeydown" 的事件.
document.onkeydown = keyDown
這裡的 keyDown 是你所要編寫的相應鍵盤的子程式。當你的瀏覽器讀了以上的語句, 它將會知
道哪個鍵被按下了,然後啟動子程式 keyDown()。 子程式的名字隨你起了,在這裡在子程式名\r
字後面不需要括弧。取得哪個鍵被按下卻在Netscape 和 IE 有所不同。看以下代碼,如果用的是
Netscaep, 變數 nKey 將會得到 key code, 而讓 ieKey 為 0. 相反, 如果用的是 IE, ieKey
為 key code 而 nKey 為 0:
代碼:
function keyDown(e) {
if (ns4) {
var nKey=e.which;
var ieKey=0
}
if (ie4) {
var ieKey=event.keyCode; var nKey=0
}
alert("nKey:"+nKey+" ieKey:" + ieKey);
}
document.onkeydown = keyDown
if (ns4) document.captureEvents(Event.KEYDOWN)

用鍵盤移動元素

假如你想用鍵盤來啟動你的滑動, 你需要Crowdsourced Security Testing道哪個鍵被按了, 然後用相應的子程式來滑動元
素. 下面我們準備用 "A" 鍵來啟動滑動子程式. Netscape 的 "A" 是 97. 而 IE 是 65. 也就
是說, nKey 為 97 而 ieKey 為 65.
代碼:
function init() {
if (ns4) block = document.blockDiv
if (ie4) block = blockDiv.style
block.xpos = parseInt(block.left)
document.onkeydown = keyDown
if (ns4) document.captureEvents(Event.KEYDOWN)
}
function keyDown(e) {
if (ns4) {
var nKey=e.which; var ieKey=0
}
if (ie4) {
var ieKey=event.keyCode;
var nKey=0
}
if (nKey==97 || ieKey==65) {
// if "A" key is pressed slide()
}
}
function slide() {
if (block.xpos < 300) {
block.xpos += 5 block.left = block.xpos status = block.xpos
// not needed, just for show
setTimeout("slide()",30)
}
}


啟動變數

我們這裡介紹一種方法: 啟動變數, 來控制滑動的停止和啟動. 這個變數記錄了元素是否在動
還是不動. 然後在滑動子程式裡放置 "if" 語句, 根據這個啟動變數的值來決定是否停止還是
繼續滑動.
代碼:
function slide() {
if (myobj.active) {
myobj.xpos += 5
myojb.left = myobj.xpos
setTimeout("slide()",30)
}
}

使用 onKeyUp 和啟動變數來控制滑動

onkeyup 就是 onkeydown 相反, 也就是說它用來對鍵起來這個事件做出反應的.
代碼:
document.onkeydown = keyDown
document.onkeyup = keyUp if (ns4)
document.captureEvents(Event.KEYDOWN | Event.KEYUP)

下面就是一個完整的程式碼:

function init() { if (ns4) block = document.blockDiv if (ie4) block = blockDiv.style block.xpos = parseInt(block.left) block.active = false document.onkeydown = keyDown document.onkeyup = keyUp if (ns4) document.captureEvents(Event.KEYDOWN | Event.KEYUP) } function keyDown(e) { if (ns4) { var nKey=e.which; var ieKey=0 } if (ie4) { var ieKey=event.keyCode; var nKey=0 } if ((nKey==97 || ieKey==65) && !block.active) { // if "A" key is pressed block.active = true slide() } } function keyUp(e) { if (ns4) { var nKey=e.which; var ieKey=0 } if (ie4) { var ieKey=event.keyCode; var nKey=0} if (nKey==97 || ieKey==65) { block.active = false // if "A" key is released } } function slide() { if (block.active) { block.xpos += 5 block.left = block.xpos status = block.xpos // not needed, just for show setTimeout("slide()",30) } }


相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.