轉載自網絡貼吧:
頁面腳本是無法截獲alt鍵的,不過可以變通一下,我想你是希望學生不要切換出當前瀏覽器窗口,要達到這個目的可以不必截獲alt+tab,而改用window.onblur(),這個事件在當前頁面失去焦點時觸發,這樣以來,我們就可以在考試開始之前聲明:"如果做窗口切換,將導致系統立刻交卷,而不管你是否已經完成",然后,在頁面的頭部寫上類似下面的代碼:
---------------------------------------------------------
<HEAD>
<TITLE> Exam </TITLE>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=gb2312">
<SCRIPT LANGUAGE="JavaScript">
function auto_submit (){
alert("你試圖離開當前窗口,系統將自動提交試卷!");
//自動提交的代碼, 例如: form1.submit();
}
window.onblur=auto_submit;
</SCRIPT>
</HEAD>
---------------------------------------------------------
這樣,只要用戶操作頁面外的任何東西(包括當前窗口的菜單,地址欄),都會觸發onblur事件.
--------
當用戶按下alt鍵時,默認會激活瀏覽器的菜單,這樣輸入焦點已經不在頁面上了,頁面內的JS自然無可奈何,所以,如樓下Jack所說的,即使屏蔽了tab也還是不夠,因為alt+tab的組合是先按alt鍵,這個alt會讓我們捕獲鍵盤操作的JS代碼完全失效,關於這一點,你試試這段代碼就知道了:
<BODY onkeypress="alert('press!');return true" onkeydown="alert('down!');return true"></BODY>
你按esc、printscreen或alt,都不會有反應,其他的,包括ctrl在內都可以截獲。
另一張說法:
你可以這樣寫:
<body>
<script type="text/javascript">
function document.body.onkeydown()
{
var a = event.altKey;
var l = event.keyCode==?? <!--此處是Tab鍵KeyCode-->
var q = a&&l;
return !q;
}
</script>