是否有任何跨浏览器的JavaScript/jQuery代码来检测浏览器或浏览器选项卡是否正在关闭,而不是由于链接被点击?
我想检查有人试图刷新页面的时间.
例如,当我打开页面时没有任何反应,但是当我刷新页面时会返回警报.
我想捕获浏览器窗口/选项卡关闭事件.我用jQuery尝试了以下内容:
jQuery(window).bind(
"beforeunload",
function() {
return confirm("Do you really want to close?")
}
)
Run Code Online (Sandbox Code Playgroud)
但它也适用于表单提交,这不是我想要的.我想要一个仅在用户关闭窗口时触发的事件.
我目前正在查看窗口的"卸载"事件,以尝试确定"卸载"事件是如何触发的,但是收效甚微.有没有办法确定如何触发javascript事件?
基本上我只需要在浏览器窗口关闭时执行一些代码,而不是刷新或导航.
目的:当客户更新我们的软件时,更新会将他们的第一个Internet请求重定向到商品页面.有一个"不要打扰"选项的按钮,但有些用户只需关闭他们的浏览器.关闭浏览器后,我需要复制"请勿打扰"功能,以便用户不再被重定向到优惠页面.由于离开页面的方式不同,简单地附加到"卸载"事件将不起作用.
在过去5天通过网络上的众多论坛后,我仍然无法完全追踪浏览器关闭事件.我的要求是在用户尝试关闭浏览器时生成弹出消息.
我在body'onbeforeunload'事件上调用了我的javascript函数.我已经硬编码条件来检查浏览器,刷新,文件关闭或Alt-F4的红色'X'按钮的鼠标坐标.
当浏览器窗口最大化时,我的代码工作正常,但如果我们在限制后缩小它,则会失败.请帮助我,如果有些人已经找到了类似问题的解决方案.
谢谢.
好的,告诉我是否可以检测用户是否点击了浏览器的"刷新"按钮.此外,可以通过右键单击 - 刷新或Ctrl-R来触发刷新.我的要求是在Refresh上使变量为false.我只能在F5上做到这一点,但所有其他方式仍然无法实现.这同样适用于Back Buton.
嗨ppl,感谢所有回复至少的人.我已经与我的老年人谈过这个问题,他们现在已经了解并且已经对浏览器菜单按钮做出了妥协.所以现在我的任务变得简单了.现在,我正在使用一个变量并默认情况下将其设置为true.正如我之前提到的,我只需捕获onbeforeunload并在用户试图离开时弹出一条消息.当用户导航到其他页面时,该消息不会弹出,因为我使用以下代码在我的页面的所有链接上将变量设为false:
document.onclick = function() {
//To check if user is navigating from the page by clicking on a hyperlink.
if (event.srcElement.tagName == 'A')
blnShowMsg = false; //To not popup the warning message
else
blnShowMsg = true; //To popup the warning message
}
Run Code Online (Sandbox Code Playgroud)
在我的情况下,当用户执行刷新,返回或转到收藏夹中的任何链接等时,仍会显示该消息.
谢谢伙计,但我已经经历过那个并没有找到太多帮助.我的老年人对这个解决方案不满意,因为在我的应用程序的evry链接上放置一个标记是一项复杂的工作,他们害怕破坏应用程序.任何其他建议将不胜感激.再次感谢.
难道没有人能想到这里的解决方案!所有专家在哪里?
可以通过"刷新"操作和"窗口关闭"操作触发卸载事件.有没有办法区分实际触发它的动作?在我的情况下,我想忽略Refresh动作.能否请您深入了解一下工作原理是什么?
我注意到已经有这样的问题了,但似乎它们都没有得到解决.因此我再次提出这个问题,希望有些聪明人可以解决这个问题.
我想在浏览器关闭或标签关闭后终止会话.我需要在会话到期后使用Session Listener.But进行一次数据库连接,为此我需要等到会话销毁.
这是会话销毁时执行的代码.
public void sessionDestroyed(HttpSessionEvent event) {
synchronized (this) {
//System.out.println("deletion");
ServletContext application = event.getSession().getServletContext();
sessionCount = (Integer) application.getAttribute("SESSION_COUNT");
application.setAttribute("SESSION_COUNT", sessionCount=sessionCount - 1);
//application.setAttribute("SESSION_COUNT", --sessionCount);
try
{
Class.forName("com.mysql.jdbc.Driver");
}
catch (ClassNotFoundException e) {
System.out.println("" + e);
}
Connection connection = null;
try {
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/raptor1_5", "root", "");
Statement st = connection.createStatement();
st.executeUpdate("update adminlogin set Password='admin' where Username='admin'");
} catch (SQLException e) {
e.printStackTrace();
}
}
System.out.println("Session Destroyed: " + event.getSession().getId());
System.out.println("Total Sessions after delete: " + sessionCount);
} …
Run Code Online (Sandbox Code Playgroud) 我有存储员工 ID 的本地存储。当我刷新浏览器时,根据员工 ID 获取本地存储值,如员工 ID 获取一些数据。当我关闭浏览器时,我想使用 angularjs 或 javascript 清除本地存储中的员工 ID。我尝试了以下代码。
window.onunload = close;
function close() {
//// do something...
localStorage.clear();
return null;
}
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,当我刷新浏览器时,window.onunload 也会触发并清除本地存储值,但我只想在浏览器关闭时清除本地存储。
javascript ×8
events ×3
jquery ×2
angularjs ×1
browser ×1
java ×1
page-refresh ×1
refresh ×1
session ×1