2013-07-26 47 views
5

我需要在用户离开页面之前提示用户,确认后关闭该选项卡,如果不做任何事情。我想发送onbeforeunload上的ajax电话。确认之前onbeforeunload

我唯一的想法是写两个onunloadonbeforeunload这样的处理程序:

window.onbeforeunload = function(){ 
    return 'Are you sure you want to leave?'; 
}; 
window.onunload = function(){ 
    $.get(
     "http://www.mysite.com/php/myhandler.php", 
     { data: 1 } 
    ); 
}; 

但这似乎并没有的jsfiddle

+0

页面在ajax完成之前正在中止。这是您的ajax调用必须同步的情况。 –

+0

完成!!!!尝试代码! –

+0

+ 1,从来没有想过这 –

回答

1

它在这个小提琴中工作正常 - > Perfectly working fiddle!!!

function warning(){ 
      if(true){ 
       return "You are leaving the page"; 
       $.ajax({ 
         url: "test.php", 
         type: "post", 
         data: values to send 
         }) 
      } 
     } 
     window.onbeforeunload = warning; 
+0

但它不会在离开前提示用户 – Nikita240

+0

是的,如果用户按ok,然后拨打电话并关闭选项卡,如果没有,那么就什么都不做 – Nikita240

+0

你想保持选项卡打开,如果取消?? –

0

工作只需将他们所有的内部onbeforeunload

window.onbeforeunload = function(){ 
    $.get(
     "http://www.mysite.com/php/myhandler.php", 
     { data: 1 } 
    ); 
    return 'Are you sure you want to leave?'; 
}; 
+0

但不会执行AJAX无论结果如何?我只希望它在用户实际离开时执行呼叫。 – Nikita240

+0

这样做就像这样:提示用户,如果是的话,做AJAX,如果没有,不要AJAX并返回false。 –

+1

您的意思是? window.onbeforeunload =函数(){ 如果(提示( '您确定要离开吗?')){ $ 获得( “myphp.php”, {VAL:1} );其他 返回false; }; – Nikita240