我已经读过,除了使用ajax(或fetch)之外,还有一些其他方法可以将少量数据(主要是跟踪信息)发送到服务器。它省略了服务器的响应。浏览器有机会异步发送,不会延迟卸载或影响下一个导航的性能
我认为它类似于navigator.theMethod(url, data);
有人知道我在说什么吗?
答案 0 :(得分:1)
您可以在iframe中打开一些网址,或将此网址设置为图片来源 例如:
var image = document.createElement( 'img' ),
iframe = document.createElement( 'iframe' );
image.src = '/some/url?with=parameters';
iframe.src = '/some/url?with=parameters';
但您没有收到任何响应数据
答案 1 :(得分:0)
我找到了答案。该方法称为navigator.sendBeacon()
旧方法是使用同步XMLHttpRequest或在卸载处理程序中加载图像来向服务器提交数据。这导致页面的卸载被延迟。
使用sendBeacon()方法,当用户代理有机会这样做时,数据将异步传输到Web服务器,而不会延迟卸载或影响下一个导航的性能。
以下是最小的样本用法:
window.addEventListener('unload', logData, false);
function logData() {
navigator.sendBeacon("/log", analyticsData);
}
这是关于它的MDN article