导航离开脚本不起作用
Navigate away script not working
所以,为工作制作一个门户网站。 Boss希望我在用户离开页面时注销用户。 找到本教程: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
处理程序的事件处理程序时,它们不会出现在页面上。 试试这个...
<script type="text/javascript">
function PopIt() {
return "Are you sure you want to leave?";
}
$(document).ready(function () {
window.onbeforeunload = PopIt;
$("document").on("click", "a", function () {
window.onbeforeunload = null;
});
});
</script>
它将捕获所有链接单击,无论脚本运行时链接是否在页面上。
所以经过一周左右的尝试,我放弃了。 几天后,我的一位同事向我提到,我们继承的一个基类有一个运行OnPreInit
的脚本阻止程序函数。
我一直怀疑在我们的大型代码库中的某个地方,某些东西覆盖了我的OnBeforeUnload
功能,但是当我搜索OnBeforeUnload
的用途时,我什么也没找到。 事实证明,我从未找到脚本阻止程序,因为有人认为将其命名为不起眼的东西是个好主意!
覆盖脚本阻止程序后,原始代码起作用了。
相关文章:
- 当有许多形式时,Fancybox脚本不起作用
- Aureliaview中的脚本不起作用
- JQuery脚本在IE中不起作用
- 淡入淡出脚本不起作用
- 未捕获的类型错误:无法设置属性'innerHTML'如果为null,则将脚本移动到正文不会;不起作用
- jQuery脚本在googlechrome中不起作用
- 替换字符串的脚本;在某些网站上不起作用
- 从jquery对话框恢复原始数据,脚本不起作用
- java脚本中的谷歌地图在第二次点击时不起作用
- 我的脚本不起作用
- JavaScript onScroll在谷歌应用程序脚本web应用程序中不起作用
- 为什么锚在此脚本中不起作用
- getRange(单元格)在谷歌应用程序脚本中不起作用
- 脚本在我的引导模式中不起作用
- 用于wooccommerce的简单JQuery脚本不起作用
- 对照数组脚本检查文本框中的值不起作用
- 脚本在IE 9中不起作用
- 如果视图中没有Jquery脚本引用,Unobtrusive Javascript Validation是不起作用的
- Codeigniter :通过 AJAX 调用 php 脚本时路由不起作用
- 谷歌转化不起作用 - 脚本无法加载