2011-08-02 64 views
4

我的ASP.NET网页上有以下脚本,用于在用户从未保存的更改导航离开页面时发出警告。onbeforeunload消息出现两次(Internet Explorer)

$(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。在网络搜索中,我能够找到许多关于相关错误的参考资料,令人难以置信地返回几个版本的Internet Explorer。但是,我无法从Microsoft或任何合理的解决方法中找到任何评论。以下是我发现的几个相关链接。

  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

回答

8

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

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

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

希望这可以帮助别人!

+0

上帝派,永远不会想出来...... –

+0

我在IE浏览器中的unbeforeload问题越来越沮丧,但这种解决方案像一个冠军!谢谢!! –

2

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

  1. 包裹格在<a href="yoururl">
  2. 写JS做同样的事情,是这样的:

前一种方法更好。

+0

哎呀!我真诚的道歉。尽管我尽了最大的努力,但这是一个错字。现在纠正了。 –

1

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

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

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