我使用$ .post()函数动态地将图像填充到容器div中。 每当我对图像进行不同的过滤时,我都会中止当前的请求,但是,当我导航到我网站上的另一个页面时,我会遇到麻烦。我已经意识到,我应该在那里中止当前的请求,然而,它在Safari下挣扎,而不是在Chrome下。
初始化请求:
var request = $.post( ... );
当运行另一个时:
request.abort();
request = $.post( ... );
导航时,转到另一页:
$(window).unload(function() { request.abort(); });
是否有任何理由说明在Safari下无法正常工作或至少 ? 谢谢!
答案 0 :(得分:2)
请看一下这个问题:
Why is jQuery unload not working in chrome and safari?
unload
函数不是任何标准的一部分,因此您实际上无法确定是否在浏览器中调用了卸载函数。
尝试:
$(window).on('beforeunload ',function() {
request.abort();
});
代替。
<强>更新强>
另一种解决方案可以是以下方面。您的用户可能会导航到另一个包含链接的页面因此,使用jquery,更新链接的onclick
行为:首先中止请求,然后导航到新页面。
答案 1 :(得分:2)
不幸的是,Safari不支持卸载事件。相反,您应该使用pagehide
。
这里有一个例子:
<html>
<head>
<script>
function pageShown(evt)
{
if (evt.persisted)
alert("pageshow event handler called. The page was just restored from the Page Cache.");
else
alert("pageshow event handler called for the initial load. This is the same as the load event.");
}
function pageHidden(evt)
{
if (evt.persisted)
alert("pagehide event handler called. The page was suspended and placed into the Page Cache.");
else
alert("pagehide event handler called for page destruction. This is the same as the unload event.");
}
window.addEventListener("pageshow", pageShown, false);
window.addEventListener("pagehide", pageHidden, false);
</script>
<body>
<a href="http://www.webkit.org/">Click for WebKit</a>
</body>
</html>
我建议你阅读:https://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/
如果可以选择其他解决方案,请不要使用卸载!
答案 2 :(得分:0)
试试这个:
window.onbeforeunload = function(e) {
return 'Safari.';
};