2016-02-26 84 views
-2

我在瀏覽器中實現圖編輯器。 我想警告用戶,如果他/她在編輯器中未保存編輯並嘗試導出,可能會造成損失。如何防止瀏覽頁面_conditionally_?

不過我不想到如果沒有未保存的更改不屑於這個問題的用戶。

我發現我可以通過註冊onbeforeunload事件來阻止並詢問用戶。

$(function() { 
    window.onbeforeunload = function() { 
     return "You have unsaved changes..."; 
    } 
}); 

我無法找出什麼我應該做的不顯示此對話框中,如果沒有未保存的更改...

+0

您是否有一些檢查編輯狀態以查看其是否已保存的代碼? –

+2

這裏沒有足夠的信息來幫助你。你必須跟蹤任何正在改變的狀態,或者有辦法知道用戶編輯了他們正在編輯的任何內容。 – Nikki9696

+1

有趣的是,有些人完全理解了這一點......顯然我並沒有要求如何跟蹤我的編輯器狀態是不是很髒。即使問題標題清除了這一點。 –

回答

4

顯示的對話框中,你有要做的是從處理程序返回一個空值。所以,你可以只包裹returnif聲明:

$(function() { 
    window.onbeforeunload = function() { 
     if(hasUnsavedChanges()) { 
      return "You have unsaved changes..."; 
     } 
    } 
}); 

MDN

此事件時返回一個非空值時,系統會提示用戶 確認頁面卸載

+0

謝謝。 (我試圖用false返回,或者都是轉換爲字符串),我會在時間鎖定過期後接受它 –

0

您可以簡單地返回一個null值以不顯示任何內容:

$(function() { 
    window.onbeforeunload = function() { 
     if (anyChanges) { 
      return "You have unsaved changes..."; 
     } else { 
      return; 
     } 
    } 
}); 

else此代碼將允許頁面被靜默關閉。

相關問題