php - 如何限制用户在没有特定操作(例如,单击提交按钮)的情况下离开页面

标签 php javascript jquery ajax

我正在创建一个在线测验应用程序。

  • 测验有一个计时器,它会在用户开始测验时开始倒计时。
  • 用户应该在完成测验后提交答案。
  • 如果他的时间用完了,答案会自动提交。

现在我需要的是

  • 当用户开始测验时,我需要限制他打开其他选项卡或窗口(以避免使用谷歌或他可以搜索答案的任何其他来源)。即,限制他最小化测验窗口或打开任何新选项卡/窗口/应用程序

  • 如果他碰巧离开了测验窗口(意味着他打开了一个新窗口或其他东西),答案应该会自动提交,并且结果页面应该会在他下次返回测验页面时显示。

我假设这个问题不需要我使用的代码,因为这个问题是一般性问题。如果确实需要代码,对不起,请告诉我,我会在这里发布。如果这是一个重复的问题,我很抱歉。我尝试搜索,但我真的不知道我应该寻找哪些关键字。

感谢任何帮助。

最佳答案

正如 Vlad Preda 所提到的,确保在未激活 javascript 时阻止表单提交。

也就是说,据我所知,没有办法阻止用户尝试在网页中使用某些 javascript 作弊。一种解决方案可能是警告他哪些行为是被禁止的(比如调整窗口大小),然后如果他违反了这些规则之一,则监听可用的浏览器事件以取消测验。然而,似乎很难预测每个场景并使所有这些都与每个浏览器兼容。

一个更简单的解决方案可能是一个接一个地显示问题,将焦点放在相关的表单字段上,然后在该字段失去焦点后立即关闭问题。您也可以在一段时间内失去焦点时禁用表单字段。以下代码应该可以完成这项工作:

var intervalId;
var countDown = 10; // seconds
jQuery(formField).focus(function () {
    intervalId && clearInterval(intervalId);
});
jQuery(formField).blur(function () {
    intervalId = setInterval(function () {
        if (!(countDown--)) {
            alert('Too long to answer!');
        }
    }, 1000);
});

关于php - 如何限制用户在没有特定操作(例如,单击提交按钮)的情况下离开页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18655124/

相关文章:

用户帖子的 PHP 正则表达式清理

php - 无法将信息存储在 MySQL 数据库中

javascript - 显示显示长度 ="none";使用 JavaScript

javascript - Bootstrap Navbar 链接在 Ease-In 时被禁用

php - c# php 列出选定目录中的文件

php - 自动换行不让数字也换行

javascript - 如何处理开源 GitHub 存储库中的构建任务?

javascript - 在生产中调用销毁时,不会从 Mongo 存储中删除 Express session 数据

javascript - 如何将 jquery 变量的值获取到文本框字段中?

jquery - 将 css 添加到动态添加的 Tablerow