Javascript 检测浏览器打开的选项卡/窗口是否超过1个

Javascript 检测浏览器打开的选项卡/窗口是否超过1个,javascript,browser,tabs,sandbox,Javascript,Browser,Tabs,Sandbox,因此,我正在开发一个测验web应用程序。我想添加一个测试管理员可以设置的设置,这样用户在进行测试时只能打开一个窗口/选项卡 这样做的原因是为了让他们在测验窗口/标签打开时,不能像谷歌和谷歌那样去搜索答案。当然,他们总是可以打开一个不同的浏览器,并这样做,但仍然认为这将是一个很好的功能,为他们启用 现在我不知道这是否属于安全沙箱违规(因此根本不可用),但因为我只想检测另一个选项卡或窗口是否打开,而不获取关于该选项卡/窗口的实际信息,所以我希望这可以通过javascript实现。不能也不应该这样做。

因此,我正在开发一个测验web应用程序。我想添加一个测试管理员可以设置的设置,这样用户在进行测试时只能打开一个窗口/选项卡

这样做的原因是为了让他们在测验窗口/标签打开时,不能像谷歌和谷歌那样去搜索答案。当然,他们总是可以打开一个不同的浏览器,并这样做,但仍然认为这将是一个很好的功能,为他们启用


现在我不知道这是否属于安全沙箱违规(因此根本不可用),但因为我只想检测另一个选项卡或窗口是否打开,而不获取关于该选项卡/窗口的实际信息,所以我希望这可以通过javascript实现。

不能也不应该这样做。

你不能,但一个可能的解决办法是使用新的。您可以使用
setInterval
函数定期测试
document.fullScreen==true
以确保用户没有关闭全屏

这只适用于现代浏览器,如果用户知道如何使用JS控制台,那么解决这一问题就很简单,但它似乎确实适合您的需求


请注意,目前所有的全屏API实现都是可用的。

似乎有一种可行的替代方法可以替代下面这行描述的方法:使用,目前所有现代浏览器都支持。这看起来比监听
blur
要可靠得多。有一种可能的方法:

// on quiz start
document.addEventListener('visibilitychange', function() {
  if (document.hidden) {
    console.log('Y U hide?');
  }
});
问题是
visibilitychange
事件只有在页面从可见变为隐藏时才会触发(反之亦然)。它仍然允许用户打开两个浏览器实例——一个是测验页面,一个是任何喜爱的搜索引擎


虽然无法检测打开的选项卡数量,但您可以尝试使用以下技巧检查用户何时离开测验页面:

$(function(){
  $(window).blur(function() {
    console.log('I see what you did here!');
  });
});

不幸的是,这也会给你带来很多误报。

你做不到,谢天谢地。因为你的用户只安装了一个浏览器,或者无法运行一个浏览器的单独实例。。?第二点,谢天谢地,这是不可能的。@metal_fan,他甚至不想接近他想要的……只要确保答案不能被谷歌搜索到:)你想让我关闭所有其他选项卡和窗口,在你的网站上进行测验吗?一定是个很棒的测验…为什么不呢?因为我想要的只是检测其他窗口选项卡是否打开,而不是防止它们打开,只是检查是否有其他窗口打开。我不认为这是一种安全风险或任何其他类型的风险。如果这不是一个安全问题,那么我会想象这只是一些人认为在线测试作弊是一项人权或其他什么。缺少$(窗口)的右括号。模糊(函数()