Javascript:抑制"此页面要求您确认是否要离开“;在加载前弹出
Javascript: suppress "This page is asking you to confirm that you want to leave" popup on 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;
}
根据最后一个return
语句的值(""
、null
、true
、false
,或者根本没有return
语句),我可以有两种情况之一:
1) 用户收到"你想ping吗?"确认(好),ping被发送(好)。用户会收到"This page is asking you to confirm that you want to leave"弹出窗口(BAD)。
-或-
2) 用户得到"你想ping吗?"确认(好),ping被不发送(坏),并且用户被not显示"This page is asking you to confirm that you want to leave"弹出窗口(好)。
如何发送AJAX ping,同时抑制弹出的"This page is asking you to confirm you want to leave"
编辑:尽管听起来很荒谬,但我为这个问题找到的"解决方案"是在xmlhttp.send()
语句之后的alert()
。唯一干净的方法是提醒用户他的ping已经发送。如果未来的StackOverflowers能找到更好的解决方案,我很想知道。
谢谢。
您可以使Ajax请求同步。
xmlhttp.open("GET","http://example.com?ping=1234", false); // use false here
xmlhttp.send();
如果您的服务器速度较慢,它可能会导致轻微的延迟,但它应该可以解决ping无法发送的问题。
好吧,我没有在你离开之前做,而是在网上做了,下面是我在FF和IE中的工作(除了chrome,我只有这些):http://jsfiddle.net/rmpLm/9/.
也许你可以让它在chrome上工作,但如果你做不到,也许你可以制作它,这样如果你点击ok,它会把你带到你发送它的页面。希望它能有所帮助:)
编辑:也许你应该考虑让它加载
- Javascript,检查元素是否已离开屏幕
- 如何检查焦点是否离开了一组元素
- 如何验证用户在离开文本框时是否在文本框中输入了内容
- 检测下拉导航是否会离开屏幕并重新定位
- 检查人员是否通过鼠标移动离开网站
- 你能使用JavaScript来检测用户是否关闭了浏览器选项卡吗?关闭浏览器?或已离开浏览器
- 在询问用户是否要离开之前检查 ASP 页是否脏
- Javascript onbeforeunload :如何检测用户是否点击“离开此页面”
- 我怎么知道用户是否已在检票口中离开页面
- 使用 Node.js,是否有一些语义可以告诉我代码何时离开当前堆栈
- Javascript:抑制"此页面要求您确认是否要离开“;在加载前弹出
- 是否有任何方法可以检测用户是否按下“按钮”;停留在页面上”;或“;离开页面"在beforeunload事件中
- 确定浏览器是否正在导航离开-没有onunload
- 检测用户是否正在离开页面,并使用ajax进行删除
- 如何使用onunload/oneforunload检查用户何时离开页面.了解消息是否已阅读
- 检测用户是否已离开站点
- 如何检测用户是否离开了输入字段
- 检查元素是否离开屏幕的右边缘
- 是否可以监听房间的加入和离开事件?
- 检测用户是否“离开”网页上