【发布时间】:2012-05-01 15:43:07
【问题描述】:
我必须对页面刷新或重新加载进行某种操作。那是当我点击下一页或过滤或刷新网格时。我需要在此事件上显示一些确认框。
是否有任何事件可以告诉您页面正在执行文件管理?刷新还是分页?使用javascript?
谢谢
【问题讨论】:
标签: javascript jquery
我必须对页面刷新或重新加载进行某种操作。那是当我点击下一页或过滤或刷新网格时。我需要在此事件上显示一些确认框。
是否有任何事件可以告诉您页面正在执行文件管理?刷新还是分页?使用javascript?
谢谢
【问题讨论】:
标签: javascript jquery
如果刷新,window.onunload 会触发。
// From MDN
window.onunload = unloadPage;
function unloadPage()
{
alert("unload event detected!");
}
https://developer.mozilla.org/en/DOM/window.onunload
如果你只是想要一个确认框让他们留下来,使用这个:
window.onbeforeunload = function() {
return "Are you sure you want to navigate away?";
}
【讨论】:
您可以创建一个隐藏字段并在第一页加载时设置其值。再次加载页面时,您可以检查隐藏字段。如果它是空的,那么页面是第一次加载,否则它会被刷新。像这样的东西:
HTML
<body onLoad="CheckPageLoad();">
<input type="hidden" name="visit" id="visit" value="" />
</body>
JS
function CheckPageLoad() {
if (document.getElementById("visit").value == "") {
// This is a fresh page load
document.getElementById("visit").value = "1";
}
else {
// This is a page refresh
}
}
【讨论】:
我认为有一些关于解决这个问题的澄清说明很重要。
首先,刷新/隐藏字段系统在新页面副本的开头和之后起作用,而不是在离开第一个页面副本时。
根据我对这种方法和其他一些方法的研究,主要由于隐私标准,无法在卸载期间或更早检测到页面刷新。仅在新页面加载后及以后。
我有一个类似的问题请求,但基本上它是在页面退出时终止会话,并且在查看时发现浏览器将重新加载/刷新视为两个不同的部分:
这些也是按照这个顺序发生的。只有自定义或非标准浏览器的行为会有所不同。
【讨论】:
$(function () {
if (performance.navigation.type == 1) {
yourFunction();
}
});
更多关于由performance.navigation返回的PerformanceNavigation对象
【讨论】: