16

我必须对页面刷新或重新加载进行某种操作。那是当我点击下一页或过滤或刷新网格时。我需要在此事件上显示一些确认框。

是否有任何事件可以告诉您页面正在执行文件管理?刷新还是分页?使用 javascript?

谢谢

4

4 回答 4

19

如果是清爽的,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?";
}
于 2012-05-01T15:46:25.247 回答
3

您可以创建一个隐藏字段并在第一页加载时设置其值。再次加载页面时,您可以检查隐藏字段。如果它是空的,那么页面是第一次加载,否则它会被刷新。像这样的一些事情:

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
    }
}​
于 2012-12-30T09:49:05.547 回答
1

我认为有一些关于解决这个问题的澄清说明很重要。

首先,刷新/隐藏字段系统在新页面副本的开头和之后工作,而不是在离开第一个页面副本时工作。

根据我对这种方法和其他一些方法的研究,主要由于隐私标准,无法在卸载期间或更早检测到页面刷新。仅在新页面加载后及以后。

我有一个类似的问题请求,但基本上它是在页面退出时终止会话,并且在查看时发现浏览器将重新加载/刷新视为两个不同的部分:

  1. 关闭当前窗口(触发 onbeforeunload 和 onunload js 事件)。
  2. 请求该页面,就好像您从未拥有它一样。服务器上的会话当然没有问题,但是没有查询字符串更改/添加到页面最后使用的 url 的值。

这些也以这种顺序发生。只有自定义或非标准浏览器的行为会有所不同。

于 2015-04-20T15:45:42.583 回答
1
$(function () {
    if (performance.navigation.type == 1) {
        yourFunction();
    }
});

更多关于PerformanceNavigation返回的对象performance.navigation

于 2018-02-02T08:50:33.503 回答