2016-03-07 127 views
1

我想在用戶離開選項卡之前通知用戶保存更改(僅當他們沒有單擊保存按鈕時)。我發現了很多關於髒頁面,jquery,onbeforeunload等的示例,但是每個示例都會在用戶離開頁面之前通知用戶,因爲我想在他們更改或移動到同一頁面導航欄中的其他選項卡之前通知他們。請幫我出來通知用戶在更改選項卡時保存更改

+0

這是不可能的。當用戶在活動標籤之間切換時,Javascript不會收到任何事件。 –

+0

爲您的頁面上的選項卡提供點擊/焦點處理程序。點擊/聚焦時,檢查數據是否被保存,當一個選項卡不等於他們當前所在的選項卡時。如果您在討論用戶何時切換瀏覽器選項卡,$(window).on(「blur」,function(){alert(「您爲什麼要離開?」);});會在用戶嘗試切換瀏覽器標籤時提醒用戶 – mhodges

+0

可能定義了一個在用戶保存時變爲true的變量,以及每次點擊新標籤時檢查變量值的函數。你只需要小心地重新設置它,或者每個標籤都有一個單獨的變量(但是你可能仍然希望重置,因爲它們可能會在同一個會話中導航回該標籤並添加更多信息 - 而且你不會「不想已被保存了它的舊值在這種情況下仍然存在) – HolyMoly

回答

0

很基本,也可能不符合你的需求,但它的可能實現。

該方法只檢測windowblurfocus事件。另外,它還會在窗口外點擊時觸發警報。不幸的是,您可能會盡可能接近檢測標籤更改。

$(window).focus(function() { 
    //They are staying on the page 
    console.log("You've chocen to stay") 
}); 

$(window).blur(function() { 
    //They're leaving the tab 
    alert("Sure you don't want to stay?"); 
}); 

Working Demo

+0

$ scope。$ on('$ destroy',function(){ \t \t window.onbeforeunload = undefined; \t}); \t $範圍。在$( '$ locationChangeStart',函數(事件,接下來,電流){ \t \t如果($ scope.needToConfirm ==真){ \t \t \t如果(確認(「你忘了保存!!「)){ \t \t \t \t事件。的preventDefault(); \t \t \t} \t \t} \t});這對我來說Thanq都有效 – Meena

相關問題