zoukankan      html  css  js  c++  java
  • (转)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>

  • 相关阅读:
    发布一个扩展Repeater的模板控件,带自动分页功能
    webservice 测试窗体只能用于来自本地计算机的请求
    FCKeditor编辑器中设置默认文本行高和字体大小
    程序员的个人性格
    程序设计模式的有趣解释-追MM
    集锦一
    UML简介(原创)
    一位IT从业人员的心路历程
    一个初级测试工程师的工作总结
    "与熊共舞"(转载)
  • 原文地址:https://www.cnblogs.com/laobiao/p/6962317.html
Copyright © 2011-2022 走看看