Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript $window.unload中的Post方法从未在关闭选项卡时调用更改url,而是在关闭浏览器时运行_Javascript_Jquery_Javascript Events - Fatal编程技术网

Javascript $window.unload中的Post方法从未在关闭选项卡时调用更改url,而是在关闭浏览器时运行

Javascript $window.unload中的Post方法从未在关闭选项卡时调用更改url,而是在关闭浏览器时运行,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我的解锁方法在更改url时从未被调用。关闭浏览器将执行该方法。关闭选项卡不会执行该方法。。。我得出这个结论是因为服务器端没有收到post(通过检查控制台) 首先,除非$window引用window,否则请尝试删除$。其次,event.preventDefault()不会阻止浏览器卸载窗口。在大多数浏览器中,它只会询问用户是否想离开页面。如果用户选择不停留在页面上,并且AJAX调用尚未完成,浏览器可以立即关闭它,因此,您不会在服务器端收到任何POST请求 为了实现我认为您正在尝试的目标,我会每隔一

我的解锁方法在更改url时从未被调用。关闭浏览器将执行该方法。关闭选项卡不会执行该方法。。。我得出这个结论是因为服务器端没有收到post(通过检查控制台)


首先,除非
$window
引用
window
,否则请尝试删除
$
。其次,
event.preventDefault()
不会阻止浏览器卸载窗口。在大多数浏览器中,它只会询问用户是否想离开页面。如果用户选择不停留在页面上,并且AJAX调用尚未完成,浏览器可以立即关闭它,因此,您不会在服务器端收到任何POST请求


为了实现我认为您正在尝试的目标,我会每隔一段时间ping服务器一次,如果服务器在合理的时间内没有收到ping,则解锁报告。

我们需要更多信息来帮助,因为基本原理确实有效,如图所示。。。您在哪些浏览器中看到此问题?
/* 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');
        }
    };