【发布时间】:2013-10-03 15:37:40
【问题描述】:
所以,为工作创建一个门户网站。老板希望我在用户离开页面时将其注销。找到这个教程:http://kbeezie.com/cross-browser-exit-pop/
我使用了 jquery 示例并将其插入到几个页面中进行测试。我正在使用 asp.net/C# 进行开发。这是页面的基本布局,包括我的脚本:
<%@ Page ... %>
<asp:Content .. > </asp:Content>
<asp:Content .. >
//my navigate away function
<script type="text/javascript">
function PopIt() {
return "Are you sure you want to leave?";
}
$(document).ready(function () {
window.onbeforeunload = PopIt;
$("a").click(function () { window.onbeforeunload = null; });
});
</script>
<div>
<table></table>
//other stuff
</div>
</asp:Content>
当我单击我们的门户网站上的链接时,导航离开脚本有效,它不会弹出,因为我们正在单击内部链接。但是,如果我继续在网站上浏览,最终点击 2 或 3 次后,如果我点击内部链接,它会询问我是否确定要离开。谁能告诉我为什么会这样?
编辑:我们在每个页面上都引用了 jquery,所以这不是问题。
编辑:这是一个有效的JSFiddle。当您单击该链接时,什么也没有发生,但是当您离开时它会提示。
【问题讨论】:
-
我不确定您为什么会遇到您所描述的问题,但我不知道该代码会对您离开门户有何反应。它将使 每个 链接删除
onbeforeunload处理程序,无论是否本地。 -
我们的页面上没有任何指向外部网站的链接,这就是为什么这个解决方案适用于我们,因为它可以捕获所有内容(访问 Google、关闭浏览器等)跨度>
-
是触发卸载的链接最终在不应该发生的情况下发生,是在母版页内容中呈现的链接,还是不同的页面呈现?
-
有些在页面本身(通过
<asp:HyperLink>),有些在其他页面上生成。
标签: c# javascript jquery asp.net