我认为在浏览器窗口关闭之前需要可靠地发送数据。我目前的实现是使用同步AJAX调用。但是,由于浏览器根据https://xhr.spec.whatwg.org/#synchronous-flag弃用同步XHR调用,因此不太可能在不久的将来工作
我尝试的是用假冒的" img"替换ajax调用。调用,参数化要发送的数据并将其作为图像的url查询字符串附加。到目前为止我似乎努力了。我并不真正关心服务器响应,因此只要在卸载浏览器窗口之前发出请求并将其推送到线路上。
我的问题是它有多可靠?有人有任何消遣吗?
我的其他选择是将数据保存在cookie或webstorage中,并在下一个请求中发送它们,但这是基于用户将重新访问的假设,这在我的情况下可能不正确。
感谢。
答案 0 :(得分:0)
您可以使用ajax
在窗口的卸载事件中执行此操作您可以在以下链接中参考以下链接,了解您目前需要处理的问题和功能
Is there any possibility sending request before window closes
Is $(window).unload wait for AJAX call to finish before leaving a webpage
希望这有帮助
答案 1 :(得分:0)
我认为最好使用ajax请求。我没有证据,但是从我的经验来看,dom慢慢地工作然后js。例如,当你这样做时:
var div = document.createElement('div');
div.innerHTML = "mama";
div.className = "myDiv";
document.getElementById("myWrapper").appendChild(div);
var text = document.getElementByClassName('myDiv')[0].innerHTML;
有时你会得到一条带有消息的异常 - 无法读取未定义的属性innerHTML。 但是,如果你愿意的话
setTimeout(function(){
var text = document.getElementByClassName('myDiv')[0].innerHTML;
}, 50);
它的工作总是很好。这是因为dom仍未更新。因此,当您添加图像时,dom可能无法处理它。并且,当您发送ajax请求时,无论如何我都会发送它。