如何显示“您确定要离开该页吗?”当用户实际尝试关闭页面时(单击浏览器窗口或选项卡上的X按钮),而不是当他试图离开页面时(单击另一个链接)。
我的客户希望在用户尝试关闭页面时显示一条消息:“您确定要离开页面吗?您的购物车中仍有商品。”
不幸的是,
$(window).bind('beforeunload')
并不只在用户关闭页面时触发。
jQuery:
function checkCart() {
$.ajax({
url : 'index.php?route=module/cart/check',
type : 'POST',
dataType : 'json',
success : function (result) {
if (result) {
$(window).bind('beforeunload', function(){
return 'leave?';
}
发布于 2013-09-16 15:44:20
您可以使用 JQuery 执行此操作。
对于 示例 ,
<a href="your URL" id="navigate"> click here </a>
你的
JQuery
会是,
$(document).ready(function(){
$('a').on('mousedown', stopNavigate);
$('a').on('mouseleave', function () {
$(window).on('beforeunload', function(){
return 'Are you sure you want to leave?';
function stopNavigate(){
$(window).off('beforeunload');
}
并且为了得到 离开消息警报 将是,
$(window).on('beforeunload', function(){
return 'Are you sure you want to leave?';
$(window).on('unload', function(){
logout();
});
这个解决方案适用于所有浏览器,我已经对其进行了测试。
发布于 2013-09-16 13:25:09
在Ajax中尝试使用javascript
window.onbeforeunload = function(){
return 'Are you sure you want to leave?';
};
参考 link
示例2:
document.getElementsByClassName('eStore_buy_now_button')[0].onclick = function(){
window.btn_clicked = true;
window.onbeforeunload = function(){
if(!window.btn_clicked){
return 'You must click "Buy Now" to make payment and finish your order. If you leave now your order will be canceled.';
};
在这里,它会在用户每次离开页面时发出警告,直到他单击该按钮。
发布于 2013-09-23 05:56:39
功劳应该放在这里: how to detect if a link was clicked when window.onbeforeunload is triggered?
基本上,该解决方案添加了一个侦听器来检测是否有链接或窗口导致了unload事件的触发。
var link_was_clicked = false;
document.addEventListener("click", function(e) {
if (e.target.nodeName.toLowerCase() === 'a') {
link_was_clicked = true;
}, true);