1)在线打开一套测试题,从开始到考试结束,在测试过程中,如果用户打开多个测试链接地址同时测试,测试过程中不小心关闭测试题,测试过程中刷新页面,我们怎么准确记录测试开始时间。
2)当然我们打开测试开始保存一个session开始时间,结束时间取提交时间,
对于重新打开测试题链接地址,可以判定session开始时间是否存在,存在,给予“正在测试中,请继续您的测试”类似提醒。
3)对于测试过程中关闭或刷新,我们可以在测试题存放一个隐藏域,通过判定这个隐藏域是否存在,在每次关闭或刷新时候执行ajax,注销session开始时间,这样就不会出现刷新跳转到“正在测试中,....”页面,用户无法再打开测试题。
4)部分js代码:
$(window).bind('beforeunload',function(){
if($("#winid_yinchang").length<=0)
return;
$.ajax({
async:false,(注意:如果没有缺少,就会导致刷新页面阻止ajax执行,不会注销session)
type:'POST',
url:OC:filePath('interview', 'ajax', 'emptytime.php');
data:{sheetid:sheetid}
dataType:'json',
success:function(rtn){
//do nothing
}
});
});
emptytime.php--code here(仅供参考):
<?php
$sheetid = JRequest::getInt('sheetid', 0);
$app = PFactory::getApplication();
$app->setUserState('persontest_start_time_' . $sheetid, null);//注销session
OCP\JSON::success();
相关推荐
又或者是发送服务器ajax请求,通知服务器用户已经离开,比如直播间内的退房操作。 本文主要分两部分来讲解怎么完成退出行为的上报。 1.事件监听 浏览器有两个事件可以用来监听页面关闭,beforeunload和unload。 ...
因此,通常在beforeunload或unload事件中取消请求。 **五、jQuery和其他库对Ajax的封装** 为了简化Ajax的使用,jQuery提供了$.ajax()、$.get()、$.post()等函数。其他库如axios、fetch API也提供了更简洁的API,让...
你可以将Session ID存储在`sessionStorage`中,然后在`beforeunload`事件中调用服务器接口清除Session。 这种方法的一个关键问题是跨域问题。因为浏览器的同源策略限制,前端可能无法直接访问不同域名下的Session。...
参数handler函数来调用BeforeUnloadEvent时beforeunload事件。例子import { useBeforeunload } from 'react-beforeunload' ;const Example = ( props ) => { const [ value , setValue ] = useState ( '' ) ; ...
一个统一的 API,用于在beforeunload上可靠地发送数据。 为什么 通常需要在页面关闭之前将数据发送到服务器。 在这种情况下不能保证发送异步 XHR 请求,因此传统开发人员使用同步 XHR 请求。 然而,由于beforeunload...
在互联网技术中,beforeunload事件是一个浏览器提供的事件,它在窗口、文档或者其资源即将卸载之前触发。这个事件的用途通常在于防止用户在未保存更改的情况下意外离开页面。在Web开发中,beforeunload事件的应用...
beforeunload.js 原料药 BeforeUnload . enable ( # Only gets triggered if this returns truthy if : -> inputHasChanged # The warning message that is displayed message : " You have entered data that ...
window.addEventListener('beforeunload', function() { clearInterval(refreshInterval); }); ``` ### 7. 提高性能 - 使用`cache: false`防止缓存,确保每次获取最新数据。 - 考虑使用Promise或async/await进行...
1. `beforeunload` 事件:当用户尝试离开当前页面时(如点击刷新按钮、关闭窗口或导航到另一个URL),浏览器会先触发`beforeunload`事件。这是一个预卸载事件,允许开发者进行确认操作,比如询问用户是否确定要离开...
9. **前端拦截**:利用JavaScript监听浏览器的popstate、hashchange和beforeunload事件,可以捕获并处理后退操作,防止用户无意间回到已注销的页面。 10. **服务器端验证**:即使前端采取了预防措施,服务器端也应...
这通常涉及监听`beforeunload`或`unload`事件,然后在新页面加载时恢复连接。 5. **共享状态管理**:由于`clientId`保证了消息的一致性,你还需要在客户端管理订阅状态,确保新页面加载时不会重复订阅。这可能需要...
当用户尝试离开网页时,JavaScript的`beforeunload`或`unload`事件可以帮助我们执行一些操作,如弹出提示框提醒用户确认是否真的要离开。这在用户可能未保存数据或者需要特别注意的情况非常有用。 3. **表单填写**...
3. **AJAX轮询**:通过定时发送AJAX请求,服务器可以检查客户端是否在线。如果在一段时间内没有收到客户端的响应,可以认为用户已离线,然后清理相关资源。 4. **事件监听**:利用JavaScript监听浏览器的`...
在Vue中,常用的两个事件是 `beforeunload` 和 `unload`。 #### beforeunload事件 `beforeunload`事件在窗口、文档或其资源即将卸载时触发。当用户尝试离开页面或者重新加载页面时,这个事件会被触发。在Vue中,...
这通常通过使用局部存储(如`localStorage`或`sessionStorage`)、AJAX异步更新、以及利用事件监听等技术来实现。下面我们将详细探讨这些方法。 1. **利用`localStorage`或`sessionStorage`** `localStorage`和`...
在这些阶段,我们可以监听到一些特定的事件,例如`load`、`beforeunload`和`unload`等,它们可以帮助我们判断当前的页面状态。 1. **`load`事件**:当页面所有资源(包括图片、脚本等)都加载完毕后触发。如果页面...
但是,由于安全和用户体验的原因,浏览器对`beforeunload`事件的处理进行了限制,不能直接进行异步操作(如Ajax请求),因为这可能会阻止页面的正常关闭。因此,我们通常会采用以下策略: 1. 使用`localStorage`或`...
2. **页面刷新时保存store到sessionStorage**:监听`beforeunload`事件,这个事件在页面即将刷新或卸载时触发。在这个事件的回调函数中,将store的状态序列化为JSON字符串,并存入sessionStorage的'store'键中。 ``...