在关闭浏览器窗口之前调用 URL [重复]

Posted

技术标签:

【中文标题】在关闭浏览器窗口之前调用 URL [重复]【英文标题】:Call URL before closing of Browser Window [duplicate] 【发布时间】:2010-10-13 19:54:45 【问题描述】:

我想在网页的卸载功能中调用 URL,但在卸载功能中,获取请求不起作用。我的代码如下所示:

$(window).unload( function ()  
   jQuery.get("someurl")
 );

我们希望收到有关关闭某些用户操作记录的窗口的通知。有没有可能?

如果我在 jQuery.get() 之后添加一个 alert(),Get-Request 有足够的时间来执行此操作,但这不是我们喜欢的。

【问题讨论】:

【参考方案1】:

用途:-

jQuery.ajax(url:"someurl", async:false)

【讨论】:

【参考方案2】:

您需要直接使用 onbeforeunload 事件。在这种情况下,您可以触发 ajax 调用。这是 jQuery 没有真正帮助的地方(还)。几个注意事项:

不要从 onbeforeunload 事件返回任何内容,否则浏览器将向用户显示“您确定要离开此页面”弹出窗口

如果您使 ajax 调用同步,它将在运行时停止页面卸载。如果将其设为异步,则页面将在调用运行时更改(您只是不能为该调用使用 javascript 事件处理程序)。由于 jQuery 连接了事件处理程序,因此它的 ajax 支持在这里没有那么有用。

window.onbeforeunload = function() 
   var URL = 'someplace';
   var request = null;

    if (window.XMLHttpRequest)
        request = new XMLHttpRequest();
     else if (window.ActiveXObject) 
        request = new ActiveXObject("Microsoft.XMLHTTP");
    

    if (request) 
        request.open("GET", URL, false);
        request.send();
    

【讨论】:

onBeforeUnload 事件不是标准的,因此不应使用...例如,Opera 不支持它。

以上是关于在关闭浏览器窗口之前调用 URL [重复]的主要内容,如果未能解决你的问题,请参考以下文章

浏览器窗口意外关闭时发出警报

用户关闭浏览器窗口时发送 ajax [重复]

浏览器关闭时如何触发jQuery [重复]

Angular:在关闭浏览器窗口之前显示材质弹出窗口

怎样用js关闭一个url打开的窗口

Angular 5 - 当用户关闭浏览器窗口时如何进行 API 调用?