【问题标题】:How to prevent user from going away from current window in javascript?如何防止用户离开javascript中的当前窗口?
【发布时间】:2016-09-15 13:14:59
【问题描述】:

我正在开发应用程序,用户必须在线编写认证考试。用户单击开始考试按钮后,我将打开弹出窗口进行考试。但是我们不应该允许用户离开这个窗口(为了防止他通过在另一个窗口中搜索来复制答案)。用户不能以任何方式离开活动窗口,例如按 ALT+TAB(或)WINDOWS+D。

基本上,在 javascript 中,我们需要以所有可能的方式阻止用户离开当前窗口。怎么做?

【问题讨论】:

  • 哦,你要我们写病毒……
  • 没有。这是一个要求。我们希望用户在不使用谷歌搜索和复制答案的情况下编写考试。
  • 但是因为任何病毒可能也想这样做,所以任何合理的浏览器不会让脚本这样做。您应该搜索本机应用程序和受限窗口管理器/信息亭模式(可能有适用于 Windows 和 Linux 的解决方案)。
  • 正如@Martin 所说,您最好查看其他途径,因为我认为这是不可能的,您最好检测焦点是否已从测试窗口移开并处理你想要的场景。
  • Javascript 对桌面没有这么多的控​​制,你最好创建一个在其中显示网站的程序。

标签: javascript


【解决方案1】:

防止用户离开您的网站是垃圾邮件发送者的全部需求。这就是为什么这是不可能的。你唯一能做的就是检查用户是否离开了。这将停止 js 执行: (见Detect if browser tab is active or user has switched away 对于原始代码)

 var vis = (function(){ var stateKey, eventKey, keys = { hidden: "visibilitychange", webkitHidden: "webkitvisibilitychange", mozHidden: "mozvisibilitychange", msHidden: "msvisibilitychange" }; for (stateKey in keys) { if (stateKey in document) { eventKey = keys[stateKey]; break; } } return function(c) { if (c) document.addEventListener(eventKey, c); return !document[stateKey]; } })();

vis(function(){
if(vis()==false){
alert("You left the site. You try to cheat");
//do sth else
}
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-25
    • 2017-03-01
    • 1970-01-01
    • 2014-05-01
    • 1970-01-01
    相关资源
    最近更新 更多