我正在使用下面的jQuery代码来启动叠加div,它在Chrome和Firefox中运行良好 - 但在IE9中它启动了一个窗口“你想离开这个页面吗?”并且还说“来自网页的消息:null”。在此之后点击的每个链接上都会出现窗口,直到您通过注销结束会话(这是一个基于Codeigniter的应用程序)
对于可能导致此问题的任何见解都将非常感激。
编辑:违规代码是:
window.onbeforeunload = function(){saveFormData();返回false; }
答案 0 :(得分:4)
我不知道您网页中的确切问题在哪里,但我相信您遇到了IE
和onbeforeunload
事件的欢乐。
在Internet Explorer中,它将所有导航链接点击视为“离开”页面,因此如果您定义了onbeforeunload事件,您将收到确认消息(假设您的代码或CodeIgnitor框架附加了处理程序)< / p>
问题是像这样的链接:
<a href="javascript:doSomething();">Do something on this page without leaving</a>
将触发IE以确认用户正在离开该页面。
我解决这个问题的方法是做以下事情(丑陋但有效)。
在我页面“内部”的4-5个链接的小页面(弹出窗口)中,我添加了一个CSS类:class="internal"
然后在我的onbeforeunload
事件中我会检查看看触发事件的源元素是否设置了类...如果是这样,“忽略”就会抛出“你确定要离开吗?”输入警告......
然而,在一个“主”页面上,有100个和100个链接,这将是非常难看的尝试和实现。 - 祝你好运。
答案 1 :(得分:0)
Scunliffe的回答帮我解决了这个问题 -
在我的所有JavaScript代码的末尾添加了以下行。
window.onbeforeunload = function(){}
如果想要进行快速测试,可以在IE Developer Tools的控制台部分尝试此操作。
我再也不确定这会对您的代码中的内容产生什么影响。如果有任何问题被破坏,请正确测试所有代码。将中断的代码可能与附加到页面卸载或onbeforeunload事件的任何侦听器相关。在我的情况下,没有任何:)
希望它有所帮助。