dot*_*hen 7 javascript ajax onbeforeunload
当用户离开页面时,我需要询问他是否要在离开前执行特定操作.
<script type="text/javascript">
$(document).ready(function() {
window.onbeforeunload = askConfirm;
});
function askConfirm() {
var addFriend = confirm("Would you like to ping?");
if (addFriend) {
var xmlhttp;
if (window.XMLHttpRequest) {
xmlhttp=new XMLHttpRequest();
} else {
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","http://example.com?ping=1234",true);
xmlhttp.send();
}
return null;
}
Run Code Online (Sandbox Code Playgroud)
根据去年的价值return陈述("",null,true,false,,或不含return语句的话)我可以有两种情况之一:
1)用户获得"你想要ping吗?" 确认(好),发送ping(好),并向用户显示"此页面要求您确认要离开"弹出窗口(BAD).
-要么-
2)用户获得"你想要ping吗?" 确认(好),ping 不发送(BAD),并且没有向用户显示"此页面要求您确认要离开"弹出窗口(正常).
如何发送AJAX ping,但是抑制"此页面要求您确认要离开"弹出窗口?
编辑:听起来很荒谬,我发现这个问题的"解决方法"是alert()在xmlhttp.send()声明之后.唯一干净的方法是提醒用户他的ping已被发送.如果未来StackOverflowers找到更好的解决方案,我很想知道.
谢谢.
您可以使Ajax请求同步.
xmlhttp.open("GET","http://example.com?ping=1234", false); // use false here
xmlhttp.send();
Run Code Online (Sandbox Code Playgroud)
如果你的服务器很慢,它可能会导致轻微的延迟,但它应该解决ping没有被发送的问题.
好吧,我没有在你离开之前这样做,而是在卸载时完成了这件事,这是我在 FF 和 IE 中工作的内容(除了 chrome 之外,这就是我所得到的): http: //jsfiddle.net/rmpLm/9/。
也许你可以让它在 Chrome 上工作,但如果你不能,也许你可以这样做,这样如果你点击“确定”,它就会带你到一个发送它的页面。希望能帮助到你 : )
编辑:也许你应该考虑制作它,这样它就可以加载
| 归档时间: |
|
| 查看次数: |
2799 次 |
| 最近记录: |