如果beforeunload事件中止页面重定向

时间:2017-06-19 16:22:32

标签: javascript jquery internet-explorer

我有一个取消按钮,当被调用时会将用户重定向到另一个页面:

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";
}

这适用于chrome。但是,每当用户在提示时选择停留在页面中的选项时,IE就会在onCancelButtonClick事件处理程序方法中抛出异常。

我在2009年和2010年看到SO中的一些帖子,建议只添加一个try catch来解决这个问题,我相信我们都认为它不是一个理想的解决方案。所以我想知道在过去几年中是否有人想出一个更优雅的方法来解决这个IE问题。

1 个答案:

答案 0 :(得分:0)

因此,在我的情况下,我想将用户重定向回他们来自的页面我发现如果我利用浏览器历史记录(而不是使用document.location.href重定向用户)IE不再抛出异常。

所以对我来说,解决方案只是使用window.history.back()但是你也可以使用window.history.go()进入以前访问过的特定页面而不会出现异常,这是你唯一的情况仍然遇到我在我的问题中提到的IE问题,如果您的用户试图访问他/她最近没有访问过的页面。