$window.unload 中的 Post 方法从未调用更改 url,关闭选项卡,但在关闭浏览器时运行
Post method in $window.unload never called on change url, closing the tab, but ran on closing the browser
更改 URL 时永远不会调用我的解锁方法。关闭浏览器将执行该方法。关闭选项卡不会执行该方法...我得出这个结论是因为服务器端没有收到任何帖子(通过检查控制台(。
/* Callback function that unlocks the current time report when leaving the angular app */
$window.onbeforeunload = function (event) {
event.preventDefault();
if ($scope.reportData != undefined && $scope.reportData.superId != undefined && !archive) {
$http.post(Settings.timereportBaseURLhttp + 'monthlyreport/' + $routeParams.office + '/current/' + $routeParams.tmsstep + '/' + $scope.reportData.superId + '/unlock');
}
};
首先,除非$window
指的是window
,否则请尝试删除$
。其次,event.preventDefault()
不会阻止浏览器卸载窗口。在大多数浏览器中,它只会询问用户是否要离开页面。如果用户选择不停留在页面上,并且 AJAX 调用尚未完成,则浏览器可以立即关闭它,因此,您将不会在服务器端收到任何 POST 请求。
为了实现我认为您要做的事情,我会每隔一段时间 ping 服务器,如果服务器在合理的时间内没有收到 ping,我会解锁报告。
相关文章:
- MobileFirst:在客户端运行计时器作业-最佳选项
- 使用自定义选项从控制台运行JSlint
- Chrome扩展插件:runtime.last运行tabs.get/tabs.remove时出错:没有id为0的选项卡
- 如何在并行选项卡中运行彗星聊天
- 将运行时中的最大缩放选项更改为 ol.在开放层 3 中查看
- 如何使setInterval在浏览器选项卡处于焦点时运行
- 在iPad上运行时,Mobile Safari中即将切换选项卡的Pagehide事件不会触发
- 如何:让javascript在浏览器选项卡更改时运行
- Chrome扩展-重定向当前选项卡后重新运行扩展脚本
- 若在两个不同的选项卡中打开同一个页面,如何防止javascript运行两次
- 自定义Div滑块运行过快,但仅当从另一个浏览器选项卡返回时
- 为什么我无法将此消息传递到选项卡中运行的所有帧
- Grunt为任务设置选项,并使用新值运行该任务
- 根据特定选项卡中的元素运行 .each()
- 首次运行时未发出首选项
- 在后台选项卡上运行画布
- 您能否检查 Web 应用程序是否已在另一个浏览器选项卡上运行
- 仅在选项卡处于活动状态时运行内容脚本循环
- Jquery一旦从选择下拉列表中选择两个选项运行代码
- 根据选择的选项运行JQuery动画