2012-07-01 32 views
3
function warnuser() 
{ 
    return "Don't refresh the page."; 
} 

window.onbeforeunload = warnuser; 

如果用戶刷新頁面,並且用戶在確認框中單擊'離開此頁',我想調用一個javascript函數,否則不需要! 我很困惑如何做到這一點。 謝謝使用Javascript調用頁面刷新功能

+3

如果刷新頁面會導致問題,那麼您可能應該專注於使其不會成爲問題,而不是首先防止人們這樣做。 – Quentin

+0

我同意@Quentin,你可能需要符合「Post Redirect Get」範例。 –

+1

@jezternz - 總有一種方法! :)但是沿着黑客道路將永遠支配你的代碼庫:P –

回答

2

你需要攔截F5按鍵和設置onbeforeunload處理程序只有在這種情況下:

document.addEventListener('keydown', function(e) { 
    if(e.which == 116) { 
     window.onbeforeunload = function() { 
      window.onbeforeunload = null; 
      return "Do you really want to refresh the page?"; 
     } 
    } 
}, false); 

演示:http://jsfiddle.net/ejDrq/

請注意,這並不工作,如果用戶點擊刷新按鈕。這是不可能的。

+0

用戶點擊與刷新按鈕的交互情況如何? –

+0

我需要這樣做......在完成這一步的一半......只是想知道我怎麼知道用戶是否點擊了「留在本頁面」或「離開此頁面」並相應地執行一些操作。 –

0

如果您擁有託管該頁面的服務器端的控制權,那麼您可以通過semaphorewiki:semaphore)在邏輯上處理此問題。基本上它是一個旋轉鎖,它將在服務器端會話中實現。如果已經進入並且沒有以安全方式退出,則重置頁面狀態。自然地,與所有旋轉鎖一樣,必須有一個安全狀態來清除鎖。