【问题标题】:Make a GET/POST request inside 'onbeforeunload' function在“onbeforeunload”函数中发出 GET/POST 请求
【发布时间】:2017-10-08 17:45:21
【问题描述】:

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

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

我怎样才能做到这一点?

【问题讨论】:

标签: javascript jquery angularjs dom-events onbeforeunload


【解决方案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】:

    好吧,这就是我所做的:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-05-05
      • 1970-01-01
      • 2015-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-11
      相关资源
      最近更新 更多