微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ASP.NET linkbutton两次提高onBeforeUnload事件

我发布了这个 here,但认为它可能值得一个问题.

我正在尝试做的是显示一个对话框,询问用户是否有未保存的更改时他/她是否要离开页面.一切正常.但问题描述如下:

有没有人遇到过Internet Explorer两次触发onb​​eforeunload事件的问题?在谷歌搜索时,我发现它与(以及其他)ASP.NET链接按钮的事实有关,HTML代码是< a href =“javascript:__ doPostBack .... 显然,当IE鼓励一个没有href =“#”的链接时,它会触发onb​​eforeunload事件.然后,当您确认我们正在显示的javascript对话框时,页面将执行“真实”卸载以导航到另一个页面,并再次引发onbeforeunload事件. 互联网上提供的解决方案是设置一个布尔变量并在显示对话框之前检查它.所以第二次,它不会显示.这一切都很好,但是当用户取消时,仍然会设置变量.因此,下次用户想要离开页面时,对话框将不再显示. 希望这有点清楚,我希望有人找到解决办法吗?

解决方法

对annakata的反应:是的,但您希望浏览器使用对话框的结果.所以你可能会认为使用’return bFlag’可以做到这一点(或者event.returnValue = bFlag),但这会给你一个第二个对话框.
感谢 this page,我找到了一条路.实际上很简单:
var onBeforeUnloadFired = false;

在这里使用此全局变量

if (!onBeforeUnloadFired) {
    onBeforeUnloadFired = true;
    event.returnValue = "You'll lose changes!";
}
window.setTimeout("ResetonBeforeUnloadFired()",1000);

然后实现该功能

function ResetonBeforeUnloadFired() {
    onBeforeUnloadFired = false;
}

因此,实际上,使用标志,但如果用户单击取消,则重置它.不完全是我想要的,但没有找到更好的东西.

原文地址:https://www.jb51.cc/aspnet/245368.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐