2013-07-26 44 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