【问题标题】:onbeforeunload Message Appears Twice (Internet Explorer)onbeforeunload 消息出现两次 (Internet Explorer)
【发布时间】:2011-08-02 18:52:50
【问题描述】:

我的 ASP.NET 网页上有以下脚本,用于在用户离开未保存更改的页面时警告用户。

$(document).ready(function() {
    $('input:not(:button,:submit),textarea,select').change(function () {
        window.onbeforeunload = function () {
            return 'Changes made to this page have not been saved!';
        }
    });
});

除了当用户使用 Internet Explorer 并尝试使用类似这样的链接离开时出现一些问题外,这与预期的效果一样。

<div onclick="window.location=&#39;http://www.domain.com&#39;;">Text</div>

如果用户选择“留在此页面上”,则消息框会出现两次。然后,如果他们第二次选择“留在此页面上”,调试器会突出显示上面的链接并显示消息:

Microsoft JScript 运行时错误:未指定的错误。

此问题似乎特定于 Internet Explorer。在网上搜索,我已经能够找到许多关于似乎相关错误的参考,令人难以置信的是可以追溯到 Internet Explorer 的几个版本。然而,我找不到来自微软的任何评论或合理的修复。以下是我发现的一些相关链接。

  1. http://forums.asp.net/t/1199756.aspx/1
  2. Why is my onbeforeunload handler causing an "Unspecified error" error?
  3. http://www.telerik.com/community/forums/aspnet-ajax/tabstrip/cancel-on-onbeforeunload-in-ie-6-7-create-js-unspecified-error.aspx
  4. http://scottonwriting.net/sowblog/archive/2005/04/19/163068.aspx
  5. http://www.techtalkz.com/internet-explorer/116662-onbeforeunload-dialog-cancel-button-when-window-location-href-bug.html
  6. http://www.ibm.com/developerworks/forums/thread.jspa?messageID=14213927
  7. http://www.webmasterkb.com/Uwe/Forum.aspx/jscript/4321/IE7-and-onbeforeunload
  8. http://www.bigresource.com/ASP-Javascript-Unspecified-Error-BHoy7ptS.html
  9. http://www.4guysfromrolla.com/articles/042005-1.aspx

任何人都可以提出解决方法吗?看起来 Connect 不接受 IE 错误报告。我用的是IE9

【问题讨论】:

    标签: javascript jquery internet-explorer


    【解决方案1】:

    我们在 IE11 中遇到了同样的问题。

    原来在IE中分配window.location = "http://www.domain.com"会导致这个问题。

    如果你改用location.href = "http://www.domain.com",它只会提示用户一次。

    希望这可以帮助某人!

    【讨论】:

    • 我对 IE 中的 unbeforeload 问题感到沮丧,但这个解决方案就像一个冠军!谢谢!!
    【解决方案2】:

    URL 不是onclick 属性的有效值。 onclick 指定要运行的 JavaScript;如果你想通过点击 div 导航到某个地方,你有 2 个主要选择:

    1. 将 div 包裹在 &lt;a href="yoururl"&gt;
    2. 编写 JS 来做同样的事情,比如:

    前一种方法更好。

    【讨论】:

    • 哎呀!我真诚的道歉。尽管我尽了最大努力,但这是一个错字。现已更正。
    【解决方案3】:

    不幸的是,虽然这个问题似乎首先出现在以前版本的 Internet Explorer 中,但这仍然是 IE9 中的一个错误。

    我尝试在 Microsoft Connect 上提交问题,但无法提交。

    无论如何,问题与通过 JavaScript 退出页面有关。通过将我的&lt;div&gt; 包装在锚标记&lt;a href="..."&gt;&lt;div&gt;&lt;/div&gt;&lt;/a&gt; 中解决了这个问题。使用常规链接,问题已经解决了。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-12
      • 2013-07-19
      • 2017-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多