在“onbeforeunload”函数中发出 GET/POST 请求
Posted
技术标签:
【中文标题】在“onbeforeunload”函数中发出 GET/POST 请求【英文标题】:Make a GET/POST request inside 'onbeforeunload' function 【发布时间】:2017-10-08 17:45:21 【问题描述】:我想在用户离开页面时发出 HTTP POST(甚至 GET 也可以)请求。 我尝试使用“onbeforeunload”“卸载”事件监听器来观察用户何时重定向到其他不同的页面。
有什么方法可以检查用户是否在默认的“onbeforeunload”确认框中单击了“离开”或“留下”按钮? 我只想在他单击“离开”按钮时调用该函数(发出请求)。
我怎样才能做到这一点?
【问题讨论】:
javascript, browsers, window close - send an AJAX request or run a script on window closing的可能重复 您只需要点击unload
事件,该事件仅在用户在onbeforeunload
交互过程中确认离开时触发。您必须使 ajax 调用同步。见this。
【参考方案1】:
你可以试试
window.onunload
功能取决于浏览器
window.onbeforeunload和window.onunload都有,根据浏览器的不同,使用方式不同。Quote from here
【讨论】:
【参考方案2】:onunload(或 onbeforeunload)无法将用户重定向到另一个页面。这是出于安全原因。
如果您想在用户离开页面之前显示提示,请使用
在卸载前:
window.onbeforeunload = function()
return 'Are you sure you want to leave?';
;
或者使用 jQuery:
$(window).bind('beforeunload', function()
return 'Are you sure you want to leave?';
);
这只会询问用户是否要离开页面,如果他们选择留在页面上,您将无法重定向他们。如果他们选择离开,浏览器将转到他们告诉它去的地方。
您可以在页面卸载之前使用 onunload 执行操作,但不能从那里重定向(Chrome 14+ 会阻止 onunload 中的警报):
window.onunload = function()
alert('Bye.');
或者使用 jQuery:
$(window).unload(function()
alert('Bye.');
);
【讨论】:
您好,请分享您的看法,这对您有帮助吗?【参考方案3】:好吧,这就是我所做的:
-
当用户尝试离开页面时 - 在 onbeforeunload 事件监听器中调用 API(如果用户点击离开按钮,我想调用该 API)。
如果用户点击离开按钮,他将被重定向到其他页面。
如果用户单击停留按钮,我在 onbeforeunload 事件侦听器中有一个超时功能,该功能将在用户停留在当前页面本身的一定时间(2 秒)后执行。 [在这个 API 中,我撤销了在第一步中调用的 API 所做的操作]
【讨论】:
以上是关于在“onbeforeunload”函数中发出 GET/POST 请求的主要内容,如果未能解决你的问题,请参考以下文章