2016-05-09 35 views
0
$(window).bind('beforeunload', function() { 

    return "Content will be deleted"; 
    Cookies.remove('title'); 
    Cookies.remove('description'); 
    Cookies.remove('imageCollection'); 
    Cookies.remove('imageIdCollection'); 

    $.ajax({ 
     url: "<?php echo base_url(); ?>myController/myFunction", 
     type:'POST', 
      }).done(function (data){ 
       $("#display").html(data); 
       $('#loadingmessage').hide(); 

      }); 

     }); 

,當我瀏覽到其他頁面也顯示警告「離開此頁面」或「留在頁面」和Ajax功能火我是否留點擊頁面上。即使我點擊停留在本頁,事件火災window.beforeunload

如何在用戶點擊「停留在頁面」時停止進一步的功能。

我要調用此方法,如果用戶單擊離開頁面:

Cookies.remove('title'); 
    Cookies.remove('description'); 
    Cookies.remove('imageCollection'); 
    Cookies.remove('imageIdCollection'); 

    $.ajax({ 
     url: "<?php echo base_url(); ?>myController/myFunction", 
     type:'POST', 
      }).done(function (data){ 
       $("#display").html(data); 
       $('#loadingmessage').hide(); 

      }); 

是否有什麼事件來處理「留在頁面」和「離開頁面」按鈕。

回答

0

你的代碼是無法訪問的,並會在控制檯上拋出錯誤。

Cookies.remove('title'); 
Cookies.remove('description'); 
Cookies.remove('imageCollection'); 
Cookies.remove('imageIdCollection'); 

$.ajax({ 
    url: "<?php echo base_url(); ?>myController/myFunction", 
    type:'POST', 
     }).done(function (data){ 
      $("#display").html(data); 
      $('#loadingmessage').hide(); 

     }); 

    }); 

您應該將此代碼綁定到「卸載」事件而不是beforeunload。

$(window).bind('beforeunload', function() { 

return "Content will be deleted"; 
}); 

$(window).bind('unload', function() { 
     Cookies.remove('title'); 
     Cookies.remove('description'); 
     Cookies.remove('imageCollection'); 
     Cookies.remove('imageIdCollection'); 

$.ajax({ 
    url: "<?php echo base_url(); ?>myController/myFunction", 
    type:'POST', 
     }).done(function (data){ 
      $("#display").html(data); 
      $('#loadingmessage').hide(); 

     }); 


}); 

這應該適合你。

+0

我有一個圖片上傳,將圖像上傳後刷新頁面的另一種方法。在上述方法中,如果我上傳圖像,它將刪除我的所有數據。因爲它會在頁面卸載或刷新時觸發 – Nabeel

+0

您可以在圖像上傳功能中設置一個像isRefreshFromImageUpload = true這樣的全局標誌,以指示由於圖像上傳而不是其他原因刷新頁面。然後,您可以在卸載事件處理程序中讀取該標誌,以不刪除與圖像相關的cookie。 – BoltCoder

+0

希望這有助於@Nabeel – BoltCoder

0

您可以參考如下代碼:

var timeout; 

function leavePage() { 
    timeout = setTimeout(function() { 
     Cookies.remove('title'); 
     Cookies.remove('description'); 
     Cookies.remove('imageCollection'); 
     Cookies.remove('imageIdCollection'); 

     $.ajax({ 
      url: "<?php echo base_url(); ?>myController/myFunction", 
      type:'POST', 
     }).done(function (data){ 
      $("#display").html(data); 
      $('#loadingmessage').hide(); 
     }); 
    }, 1000); 
    return "You are leaving the page"; 
} 

function clear() { 
    clearTimeout(timeout); 
} 

window.onbeforeunload = leavePage; 
window.unload = clear;​