本章内容转自: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键切换页面)的更多相关文章

  1. Qt之Tab键切换焦点顺序

    简介 Qt的窗口部件按用户的习惯来处理键盘焦点.也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件. 焦点获取方式比较多,例如:鼠标点击.Tab键切换.快捷键.鼠标滚轮等. 习 ...

  2. 【Qt】Qt之Tab键切换焦点顺序【转】

    简介 Qt的窗口部件按用户的习惯来处理键盘焦点.也就是说,其出发点是用户的焦点能定向到任何一个窗口,或者窗口中任何一个部件. 焦点获取方式比较多,例如:鼠标点击.Tab键切换.快捷键.鼠标滚轮等. 习 ...

  3. ubuntu 12.04 alt+tab无法切换窗口的问题(转载)

    转自:http://www.2cto.com/os/201209/153282.html ubuntu 12.04 alt+tab无法切换窗口的问题   安装cpmpiz配置管理程序.   sudo ...

  4. js 控制窗口跳转

    使用iframe 或者使用子窗口时,session 失效时是浏览器地址转换 相关js代码:if(top!=self){ if(top.location != self.location) top.lo ...

  5. [QT] Tab键切换焦点顺序

    在Qt Designer 中点击“编辑Tab顺序“按钮进入编辑Tab顺序模式,如下图: 之后界面会变成这样: 随处点击右键即可弹出菜单,选择  "制表符顺序列表..." 出现 剩下 ...

  6. 屏蔽按CapsLock键切换到大写时,编辑框自动弹出的提示(UnregisterClass(TOOLTIPS_CLASS)后,重新设置WndProc并注意返回值)

    WNDPROC OldProc; LPCTSTR lpStr = TEXT("保持大写锁定打开可能会使您错误输入密码"); LRESULT CALLBACK WindowProc( ...

  7. js键盘事件和焦点事件

    键盘事件onkeydown //当键盘按下的时候触发onkeyup //但键盘抬起的时候触发event.keyCode //数字类型 键盘按键的键值功能键 ctrlkey shiftkey altke ...

  8. js捕捉IE窗口失去焦点事件,判断离开页面刷新或关闭的方法

    js捕捉IE窗口失去焦点事件,判断离开页面刷新或关闭的方法 javascript如何捕捉IE窗口失去焦点事件window.onblur = function(e) { //you code}; 弹框的 ...

  9. JS控制文本框内键盘上下左右键的焦点

    avaScript键盘上下左右控制文本框焦点的方法有很多,这里简单说两种方法: 方法一: 创建一个table的dom元素,包含5行4列的文本框 <!DOCTYPE HTML PUBLIC &qu ...

随机推荐

  1. (九)How to use the audio gadget driver

    Contents [hide]  1 Introduction 2 Audio Gadget Driver 1.0 2.1 Enabling the audio gadget driver 2.2 U ...

  2. 4.3. Scrapy Shell

    Scrapy Shell:模拟scrapy去发送请求 Scrapy终端是一个交互终端,我们可以在未启动spider的情况下尝试及调试代码,也可以用来测试XPath或CSS表达式,查看他们的工作方式,方 ...

  3. printf格式输出

    参考:http://www.cplusplus.com/reference/cstdio/printf/ C string that contains the text to be written t ...

  4. 嵌入式Linux下CAN总线配置

    问题背景:本人开发板使用的是迅为iTOP4412精英版,额外购买的CAN/485模块,如下图: 但是插上模块之后,在终端使用ifconfig can0命令发现开发板读不到CAN设备,显示“ifconf ...

  5. jquery之闭包

    闭包 常见形式是函数A里面定义一个函数B,并返回函数体的引用,很抽象是不是,具体代码如下: function wenwa() { ; function cj() { console.log(" ...

  6. nginx 访问控制模块

    截图,代码截屏均引用自慕课网nginx相关教学视频 基于用户的访问控制模块 http_access_module 基于用户登录信任的模块 http_access_module 参数示意:address ...

  7. HDU-1358-Period(KMP, 循环节)

    链接: https://vjudge.net/problem/HDU-1358#author=0 题意: For each prefix of a given string S with N char ...

  8. 浅谈Spring @Order注解的使用(转)

    注解@Order或者接口Ordered的作用是定义Spring IOC容器中Bean的执行顺序的优先级,而不是定义Bean的加载顺序,Bean的加载顺序不受@Order或Ordered接口的影响: 1 ...

  9. hdu 6046 hash

    题: OwO http://acm.hdu.edu.cn/showproblem.php?pid=6046 (2017 Multi-University Training Contest - Team ...

  10. 如何利用fiddler4 抓取手机的数据包

    1.安装fiddler . 2.设置fiddler  .tool==> option里面  https 要打开,然后选择actions 第一个 安装本地证书: 3.设置手机访问的数据都要经过fi ...