我正在制作一个网站,用户可以重复点击按钮以增加他/她的分数。为了防止作弊,我想测量每次点击之间的时间,如果他们点击得非常快,并且点击之间的时间非常短,我希望出现一个验证码或类似的东西。
如何测量点击之间的时间?
如何测量点击之间的时间?
点击处理程序可以通过JavaScript "Date"实例来维护时间戳。计算两个时间戳的差值,就可以得到以毫秒为单位的时间间隔。
请注意时钟精度不一定很高,人类可以非常快地生成点击事件。我认为Windows系统提供的精度不会比15毫秒更好。
我的建议如下:
$('button').click((function() {
var history = [],
last = +new Date();
return function(e) {
history.push(e.timeStamp - last);
console.log(history[history.length - 1]);
last = e.timeStamp;
};
}()));
这将输出并存储两次点击之间的毫秒差异。您可以使用history数组来获取平均值,并检查是否低于50ms或其他值。
演示: http://jsfiddle.net/TxKjT/
带平均值检查的演示: http://jsfiddle.net/TxKjT/2/