js控制窗口失去焦點(包括屏蔽Alt+Tab鍵切換頁面)


轉載自網絡貼吧:

頁面腳本是無法截獲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>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM