2013-10-24 71 views
2

我有下面的代碼,它會警告用戶,如果他們刷新頁面運行良好。警告用戶刷新頁面,但允許URL更改?

但是當用戶點擊一個按鈕或者某個可能只是href ='#'的按鈕或者甚至是我的網站上的一個url更改時,它們也會被警告。如何在刷新瀏覽器時只顯示此警報?

感謝

window.onbeforeunload = function (e) { 
    e = e || window.event; 

    // For IE and Firefox prior to version 4 
    if (e) { 
     e.returnValue = 'WARNING: You are about to reload this page, doing so will loose all your open tabs and loose any unsaved data.'; 
    } 

    // For Safari 
    return 'WARNING: You are about to reload this page, doing so will loose all your open tabs and loose any unsaved data.'; 
}; 
+1

拼寫修正:'丟失'不是'鬆散':) –

+0

哈哈謝謝 - 這將是令人尷尬:) – realtek

+2

我不想挑剔,但我不會寫*會被*,要麼。 ;-) –

回答

2

概念的解決方案(jQuery中):

var going_away = true; 
$("a").click(function() 
{ 
// if it's local link - $(this).attr('href').indexOf("#") == 0 || $(this).attr('href').indexOf("/") == 0 
    going_away = false; 
}); 

$("form").submit(function() 
{ 
// if it's local action - $(this).attr('action').indexOf("/") == 0 
    going_away = false; 
}); 

window.onbeforeunload = function (e) { 
    if (going_away) 
     window.confirm(...) 
} 

編輯:當然的前提條件下是針對外部鏈接,因此很可能我們應該檢查HTTP,或區別本地和外出鏈接的其他方式。

+0

優秀的,聽起來像一個偉大的想法!謝謝:) – realtek

+1

請注意,這不包括通過onClick處理程序通過以下語法從錨和表單以外的元素重定向JS:'window.location.href ='page.html'或META重定向 –

+0

儘管很好的解決方案,你只能捕獲某些導航操作。通過輸入網址,回頭或轉發,用戶何時離開頁面? –