作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我只是想知道为什么这不适用于 IE。它适用于 Chrome 和 Firefox。
window.onbeforeunload = function()
{
fetch("http://"+window.location.hostname+"/process_sc.php?cC=" + 1);
}
function fetch(url) {
var x = (window.ActiveXObject) ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
x.open("GET", url, false);
x.send(null);
}
最佳答案
你怎么知道它不起作用?
通常,beforeunload 事件、unload 事件和实际页面退出之间的时间很短。在页面卸载时,所有正在运行的脚本都会被删除(例如,浏览器会关闭窗口或导航到用户提供的地址)。
这里可能发生的情况是浏览器实际上没有时间在页面卸载之前发送 ajax 请求。
我见过几种方法来确保在页面卸载完成之前完成您的最终请求。其中之一是发送请求,然后引入运行 X 毫秒数的循环,推迟 unload 事件并确保可以完成 ajax 请求。
window.onbeforeunload = function() {
fetch("http://"+window.location.hostname+"/process_sc.php?cC=" + 1);
// here we force browser to wait for 300 seconds before proceeding with unload
var t = Date.now() + 300;
while(Date.now() < t) {};
}
关于javascript - 带有 ajax 的 onBeforeUnload 不适用于 IE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9480302/
我是一名优秀的程序员,十分优秀!