[英]prevent user from refreshing a page multiple times
I am facing a issue when a user holds F5 for 10-15 minutes the web page becomes unresponsive and finally IIS throws an error. 当用户按住F5 10-15分钟时,网页正变得无响应,最终IIS引发错误,我遇到了一个问题。
To manage this, I want to restrict the user from pressing F5(lock F5 event) after certain number of times. 为了解决这个问题,我想限制用户在一定次数后再按F5(锁定F5事件)。 After some time interval say 5 minutes I want to enable the refresh functionality(unlock F5 event).
间隔5分钟后,我要启用刷新功能(解锁F5事件)。
I am using a cookie to save the number of times user presses F5. 我正在使用cookie来保存用户按F5的次数。 To handle cookie I am using the code mentioned here .
为了处理cookie,我使用这里提到的代码。
Assign a event to check if F5 keypress. 分配一个事件以检查是否按下F5。
$(document).on("keydown", tryingF5);
I am using a variable to hold the cookie value and incrementing it once user presses F5. 我正在使用一个变量来保存cookie值,并在用户按下F5时将其递增。
var numberOfF5Click = 1;
var thresholdClick = 10;
var numberOfF5Click = 1;
function tryingF5(e) {
if ((e.which || e.keyCode) == 116) {
//alert(numberOfF5Click);
if (numberOfF5Click > thresholdClick) {
e.preventDefault();
alert("Multiple refresh has been prevented for some time!!");
}
numberOfF5Click = numberOfF5Click + 1;
docCookies.setItem("NumberOfF5Click", numberOfF5Click);
//alert("F5 Clicked =" + numberOfF5Click);
};
};
The complete code is setup here : JSBin 完整的代码在这里设置: JSBin
Question: The code is not working as expected, something is n and How could I do it better ? 问题:代码未按预期工作,n为n,我该如何做得更好?
Try this: 尝试这个:
var everyXMinutes = 5 * 1000; // 5 seconds
var maxPerEveryXMinutes = 5; // 5 times per x seconds.
document.onkeydown = function (e) {
if (e.keyCode === 116) {
if (!localStorage.refreshments) {
localStorage.refreshments = JSON.stringify([]);
}
var refreshments = JSON.parse(localStorage.refreshments);
var date = new Date();
if (date.getTime() - refreshments[refreshments.length - 1] >= everyXMinutes) {
refreshments = [];
} else if (refreshments.length >= maxPerEveryXMinutes) {
alert("You must wait " + ((everyXMinutes - (date.getTime() - refreshments[refreshments.length - 1])) / 1000) + "s in order to be able to use the refresh function.");
return false;
}
refreshments.push(date.getTime());
localStorage.refreshments = JSON.stringify(refreshments);
}
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.