onbeforeunload消息出现两次(Internet Explorer)

我在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时尝试使用像这样的链接导航之外的一些问题时,此function与预期一样。

 
Text

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

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

此问题似乎特定于Internet Explorer。 在网上搜索,我已经能够找到许多类似错误的参考资料,令人难以置信地回溯了几个版本的Internet Explorer。 然而,我无法找到微软的任何评论或合理的解决方案。 以下是我发现的一些相关链接。

  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. http://www.4guysfromrolla.com/articles/042005-1.aspx

有人可以建议一个解决方法吗? 看起来Connect不接受IE错误报告。 我正在使用IE9

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

事实certificate,分配window.location = "http://www.domain.com"将导致IE中出现此问题。

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

希望这可以帮助别人!

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

  1. 将div包装在
  2. 写JS做同样的事情,比如:

前一种方法更好。

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

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

无论如何,问题与通过JavaScript退出页面有关。 通过将

包装在锚标记

中解决了该问题。 使用常规链接,问题现在已经解决。