我认为这是不可能的,但我会问我们社区的巫师,也许有人有诀窍。
当有人重新加载页面两次以上时,客户端想要在我的js注入平台上触发事件。他拒绝在cookie上设置一个值onbeforeonload或在服务器端有一些可以计数的东西。
任何人都知道在客户端计算页面重新加载的方法吗?
答案 0 :(得分:4)
performance.navigation
可用于区分导航,历史记录导航和页面重新加载。
由于您想知道页面是否刷新了两次,因此需要某种形式的持久性,因为浏览器不会跟踪页面重新加载的次数。为此,history API似乎最明智,因为它的状态与页面实例相关联。
例如(显示重新加载次数的演示:https://robwu.nl/s/reloadCount.html):
// On load:
var state = history.state || {};
var reloadCount = state.reloadCount || 0;
if (performance.navigation.type === 1) { // Reload
state.reloadCount = ++reloadCount;
history.replaceState(state, null, document.URL);
} else if (reloadCount) {
delete state.reloadCount;
reloadCount = 0;
history.replaceState(state, null, document.URL);
}
if (reloadCount >= 2) {
// Now, do whatever you want...
alert('The page was reloaded more than twice!');
}
我已经测试过该演示适用于以下浏览器:
如果您需要支持较旧的浏览器(不支持performance
API),那么您可以在卸载时使用时间戳更新历史状态,并检查时间戳(例如{{1 Date.now()
中的}}接近加载时的当前时间。