在'onbeforeunload'函数中进行GET / POST请求

问题描述 投票:1回答:3

我想在用户离开页面时发出HTTP POST(甚至可以使用GET的请求)。我尝试使用'onbeforeunload''unload'事件监听器来观察用户何时重定向到其他页面。

有什么方法可以检查用户是否在默认的“ onbeforeunload”确认框中单击了“ Leave”或“ Stay”按钮?我只想在他单击“离开”按钮时才调用该函数(发出请求)。

我该如何实现?

javascript jquery angularjs dom-events onbeforeunload
3个回答
0
投票

您可以尝试

window.onunload

该功能取决于浏览器

同时有window.onbeforeunload和window.onunload,它们的使用因浏览器而异。Quote from here


0
投票

onunload(或onbeforeunload)无法将用户重定向到另一个页面。这是出于安全原因。

如果要在用户离开页面之前显示提示,请使用

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.');
});

0
投票

嗯,这就是我所做的:

  1. [当用户尝试离开页面时-在onbeforeunload事件监听器中调用API(如果用户单击离开按钮,我想调用该API)。
  2. 如果用户单击离开按钮,他将被重定向到其他页面。
  3. 如果用户单击停留按钮,我在onbeforeunload事件侦听器中有一个超时功能,它将在用户停留在当前页面本身的一定时间(2秒)后执行。 [在此API中,我撤销了第一步中调用的API所做的操作]
© www.soinside.com 2019 - 2024. All rights reserved.