• (转)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>

  • 相关阅读:
    4.8 C++ typeid操作符
    4.7 C++ dynamic_cast操作符
    tomcat中class和jar的加载顺序(转)
    java Files类和Paths类的用法 (转)
    搭建DUBBO项目解决DUBBO.XML标签报错的问题(转载)
    Maven异常:Could not find artifact
    在docker宿主机上查找指定容器内运行的所有进程的PID
    jmap、jstack、jps无法连接jvm解决办法
    linux中如何查看某一进程的启动时间
    Eureka与ZooKeeper 的比较(转)
  • 原文地址:https://www.cnblogs.com/laobiao/p/6962317.html
Copyright © 2020-2023  润新知