2017-06-19 82 views
0

我有一個取消按鈕時調用的用戶到另一個頁面重定向:IE異常,如果beforeunload事件中止頁面重定向

function onCancelButtonClick() { 
 
    document.location.href = settings.cancelUrl; 
 
}

我也有在beforeunload事件的事件處理程序如果存在未保存的更改,請在離開頁面前提示用戶確認:

function onPageUnload() { 
 
    //If the changes were already saved then there is no need to prompt the user for confirmation before leaving the page. 
 
    if (eventDataSaved) 
 
    return; 
 

 
    //If the page has unsaved changes ask for confirmation before leaving the page. 
 
    if (hasTheGridRecordsBeenChanged() || formHasUnsavedChanges) 
 
    return "You have unsaved changes"; 
 
}

這適用於鍍鉻。但是,IE會在onCancelButtonClick事件處理程序方法中拋出異常,只要用戶在提示時選擇停留在頁面中的選項。

我在2009年和2010年看到了一些SO的帖子,建議只是增加一個try catch來解決這個問題,我相信我們都可以同意這不是一個理想的解決方案。所以我想知道在過去的幾年中是否有人想出一個更優雅的方法來解決這個IE問題。

+0

我相信在這種情況下,try/catch是IE的唯一解決方案 - 而且最有可能會永遠支持它。儘管如此,我會很樂意被證明是錯誤的。 –

回答

0

因此,在我的情況下,我想重定向用戶回到他們來自的頁面我發現如果我利用瀏覽器歷史記錄(而不是重定向用戶使用document.location.href)IE否更長時間拋出異常。

因此,對於我來說,解決方案只是使用window.history.back()然而,你也可以訪問以前訪問過的特定頁面,而不會使用window.history.go()獲取異常,所以只有你仍然會遇到我在我的問題中提到的IE問題,如果你的用戶試圖去訪問他/他最近沒有訪問過的頁面。