我正在创建一个Web应用程序,登录后用户导航到主页,我有导航栏(链接到页面/网址)。 Navbar 是这样的 主页 -Nvigates到主页 个人资料 - 导航到个人资料页面 聊天 - 当用户点击聊天链接时,可以访问聊天页面。 我希望当用户关闭浏览器窗口时,不小心或手动他应该得到一个警告我已经使用了像这样的onbeforeunload函数
<script language="JavaScript">
window.onbeforeunload = confirmExit;
function confirmExit()
{
return "You have attempted to leave this page. If you have made any changes to the fields without clicking the Save button, your changes will be lost. Are you sure you want to exit this page?";
}
</script>
现在,当我在聊天页面上关闭浏览器时,我收到了警告“您试图离开此页面”。工作正常,但现在的主要问题是当我点击其他链接时 个人资料或主页此功能已被调用,即使我已经在chat.jsp中实现了此代码,我也会发出此警告。即使我刷新此页面我得到上面提到的这个警告,只有当我关闭chat.jsp页面的寡妇而不是其他页面或者Refresh.Plese帮助
答案 0 :(得分:3)
Onbeforeunload在页面卸载时通过刷新,导航或页面关闭来触发。您可以在页面上的锚点上添加一个onclick事件处理程序来删除你的onbeforeunload事件以避免它,你也许能够对窗口/正文/页面上的onkeydown事件做同样的事情但是我不相信有办法捕获用户按下浏览器的刷新按钮。
示例:
<html>
<head>
<script type="text/javascript">
function warnUnload(){
return "Your message here...";
}
function linkNavi(){
window.onbeforeunload = null;
}
function isRefresh(e){
var key = null;
if(window.event) // IE
key = e.keyCode;
else if(e.which) // Netscape/Firefox/Opera
key = e.which;
if(key == 116) //F5
window.onbeforeunload = null;
}
window.onbeforeunload = warnUnload;
window.onkeydown = isRefresh;
</script>
</head>
<body>
<a href="http://google.com">Google</a>
<a href="/" onclick="return linkNavi();">Home</a>
</body>
</html>