onbeforeunload消息出现两次(ie浏览器)

onbeforeunload Message Appears Twice (Internet Explorer)

本文关键字:两次 ie 浏览器 消息 onbeforeunload      更新时间:2023-09-26

我有以下脚本在我的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 runtime error: Unspecified error.

这个问题似乎是Internet Explorer特有的。在网上搜索,我找到了大量似乎相关的漏洞,令人难以置信地追溯到几个版本的ie。然而,我无法找到微软的任何评论或合理的修复。以下是我找到的一些似乎相关的链接。

  1. http://forums.asp.net/t/1199756.aspx/1
  2. 为什么我的onbeforeunload处理程序导致一个"未指定的错误";错误呢?
  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. https://web.archive.org/web/20210417082636/http://www.4guysfromrolla.com/articles/042005 - 1. - aspx

谁能建议一个解决方法?看起来Connect不接受IE错误报告。我用IE9

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

事实证明,分配window.location = "http://www.domain.com"会在IE中导致此问题。

如果您使用location.href = "http://www.domain.com",它将只提示用户一次。

希望这能帮助到一些人!

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

  1. <a href="yoururl">
  2. 中包装div
  3. 写JS做同样的事情,类似于:

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

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

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