在关闭浏览器窗口之前调用URL

4

我想在网页的unload函数中调用一个URL,但是在unload函数中,get请求无法工作。我的代码如下:

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

我们希望了解有关某些用户操作日志关闭窗口的信息。是否有可能做到这一点?
如果在jQuery.get()之后添加alert(),则Get-Request有足够的时间完成此操作,但这不是我们首选的方法。
2个回答

14

使用方法:

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();
    }
}

1
onBeforeUnload事件不是标准事件,因此不应该使用...例如,Opera浏览器就不支持它。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接