(转)js控制窗口失去焦点(包括屏蔽Alt+Tab键切换页面)

Posted 搬砖工的奋斗史

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了(转)js控制窗口失去焦点(包括屏蔽Alt+Tab键切换页面)相关的知识,希望对你有一定的参考价值。

本章内容转自:http://www.cnblogs.com/BoKeYuanVinson/articles/3360954.html 

 

转载自网络贴吧:

页面脚本是无法截获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>

 

以上是关于(转)js控制窗口失去焦点(包括屏蔽Alt+Tab键切换页面)的主要内容,如果未能解决你的问题,请参考以下文章

登陆窗口焦点失去问题。有遇到的麻烦给解决下,问题小,可有点小纠结。

如何检测我的应用程序在 Qt 中失去焦点?

Webview 不断失去焦点

关于窗口失去焦点的问题,出高分求高手帮忙解决!

如何用JS实现div失去焦点事件

win10的alt+tab切屏窗口怎么能隐藏或者关闭,功能保留?