我正在创建一个在线测验应用程序。
- 测验有一个计时器,它会在用户开始测验时开始倒计时。
- 用户应该在完成测验后提交答案。
- 如果他的时间用完了,答案会自动提交。
现在我需要的是
- 当用户开始测验时,我需要限制他打开其他选项卡或窗口(以避免使用谷歌或他可以搜索答案的任何其他来源)。即,限制他最小化测验窗口或打开任何新选项卡/窗口/应用程序
或
- 如果他碰巧离开了测验窗口(意味着他打开了一个新窗口或其他东西),答案应该会自动提交,并且结果页面应该会在他下次返回测验页面时显示。
我假设这个问题不需要我使用的代码,因为这个问题是一般性问题。如果确实需要代码,对不起,请告诉我,我会在这里发布。如果这是一个重复的问题,我很抱歉。我尝试搜索,但我真的不知道我应该寻找哪些关键字。
感谢任何帮助。
最佳答案
正如 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/