Javascript 阻止用户刷新页面,改为重定向
我正在创建一个测验web应用程序,在游戏过程中我想阻止用户刷新页面,这样计时器就不会重新启动 我的应用程序在游戏结束时自动保存分数(当所有问题都已回答或超时),但问题是当我刷新页面时(在超时之前),它仍在工作(计时器重新启动,因此玩家可以作弊,有额外的时间思考和回答,甚至检查正确答案) 我试图阻止刷新事件,我可以停用F5并重新加载按钮,但按地址栏上的enter键仍然有效。。我意识到不可能阻止所有刷新事件,因此我尝试着换一种想法:Javascript 阻止用户刷新页面,改为重定向,javascript,angularjs,redirect,refresh,Javascript,Angularjs,Redirect,Refresh,我正在创建一个测验web应用程序,在游戏过程中我想阻止用户刷新页面,这样计时器就不会重新启动 我的应用程序在游戏结束时自动保存分数(当所有问题都已回答或超时),但问题是当我刷新页面时(在超时之前),它仍在工作(计时器重新启动,因此玩家可以作弊,有额外的时间思考和回答,甚至检查正确答案) 我试图阻止刷新事件,我可以停用F5并重新加载按钮,但按地址栏上的enter键仍然有效。。我意识到不可能阻止所有刷新事件,因此我尝试着换一种想法: 当玩家点击刷新时,我希望他被重定向到主菜单 播放的类别将自动停用(
如果您对此类应用程序有任何其他建议,也会很好。这里有一个窍门。只需在用户浏览器中设置cookie一段时间,然后检查cookie是否存在。如果它在那里,他正在尝试刷新页面,您应该将其重定向到主页,然后您可以删除cookie。您的代码应该如下所示
<?php
if(isset($_COOKIE['Test']))
{
header("location:quiz.php");
}
else
{
// Your stuff
}
setcookie("quiz1",$value, time()+3600*24); // name should be unique otherwise you won't be able to use it on the next page
?>
您可以使用window.onbeforeunload
检测页面的更改并执行一些操作
window.onbeforeunload = function (e) {
var e = e || window.event;
// Do some controls here ...
// Do synchrone call here ...
// Message in the confirmation dialog
// For IE and Firefox
if (e) {
e.returnValue = 'Are you sure want to quit this quiz';
}
// For Safari
return 'Are you sure want to quit this quiz';
};
下面是jquery中的一些示例,可能会对您有所帮助
// slight update to account for browsers not supporting e.which
function disableF5(e) { if ((e.which || e.keyCode) == 116) e.preventDefault(); };
// To disable f5
/* jQuery < 1.7 */
$(document).bind("keydown", disableF5);
/* OR jQuery >= 1.7 */
$(document).on("keydown", disableF5);
// To re-enable f5
/* jQuery < 1.7 */
$(document).unbind("keydown", disableF5);
/* OR jQuery >= 1.7 */
$(document).off("keydown", disableF5);
//对不支持e.which的浏览器进行轻微更新
函数disableF5(e){if((e.which | | e.keyCode)==116)e.preventDefault();};
//禁用f5
/*jQuery<1.7*/
$(document).bind(“keydown”,disableF5);
/*或jQuery>=1.7*/
$(文档)。打开(“向下键”,禁用F5);
//要重新启用f5
/*jQuery<1.7*/
$(文档)。解除绑定(“向下键”,禁用F5);
/*或jQuery>=1.7*/
$(文档).off(“向下键”,禁用F5);
不如保存计时器?检查此处的链接,您可能会发现它很有用:。使用此功能,您可以在用户离开页面之前向其发出带有特定消息的警告。您可以使用cookie,添加页面加载时间,并使用运行时间更新cookie。现在,当用户刷新该页面时,再次检查cookie,并在时间结束时执行所需的任何操作。注意:您必须管理cookie的启动等…这就是人们在flash中使用动作脚本执行此类操作的原因。但是你可以做一件事,就是销毁当前会话并重定向到目标页面。那么这应该发生在客户端的js代码中,还是涉及到服务器端的东西?防止客户端代码被黑客攻击和操纵是非常困难的。服务器端代码,就像@Utkarsh的回答一样,对于这样的问题来说要方便得多。老实说,我以前从未使用过cookies,我不知道如何使用cookies,你能解释一下这个过程吗?