是否可以检测用户是否已打开新标签?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以检测用户是否已打开新标签?相关的知识,希望对你有一定的参考价值。

我们正在开发一个测验平台,我们希望在测验期间检测用户是否打开新选项卡。不允许用户打开新选项卡,我们希望跟踪此信息以通知管理测验的教师。我们针对主要浏览器(IE,Chrome,Firefox,Safari)。

这可能吗?谢谢

答案

您可以使用onblur对象的window事件并编写如下内容:

function userCheated() {
    // The user cheated by leaving this window (e.g opening another window)
    // Do something
    alert("You can't cheat!");
}

window.onblur = userCheated;

注意:因为当用户离开你的窗口你没有对窗口的控制时,由于执行缓慢,userCheated功能可能会在用户回到你的窗口时执行,所以有时警报会出现在用户回来了。我认为它也可以。

浏览器支持:由于某些浏览器可能无法做到这一点,我建议您使用jQuery插件使其在更多浏览器上运行,因为jQuery API有很多兼容性调整。

使用jQuery代码将是:

$(window).onblur(userCheated);
另一答案

你不能用javascript做到这一点。它必须通过浏览器的扩展来完成我相信Internet Explorer曾经有一个禁用标签浏览的选项,浏览一下您希望执行此操作的每个浏览器的扩展或查看制作一个。更好的解决方案不是限制您不希望他们查看的网站而不是禁用标签按钮吗?

另一答案
<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
    pageEncoding="ISO-8859-1"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
<script type="text/javascript">
function userCheated() {
    // The user cheated by leaving this window (e.g opening another window)
    // Do something
    alert("New Tab Opened");
}

window.onblur = userCheated;

</script>`enter code here`
</head>`enter code here`
<body>
window.onblur = userCheated;
</body>
</html>

以上是关于是否可以检测用户是否已打开新标签?的主要内容,如果未能解决你的问题,请参考以下文章

创建一个带有标签和复选框的树,检测其父项是否已选中

检测wifi是否已打开

检测活动标签是Chrome扩展程序中的新标签

是否可以检测到长按 Android 中的应用程序图标?

收藏|分享前端开发常用代码片段

使用 JavaScript 检测在新窗口/标签(目标=_空白)中打开的功能