【发布时间】:2011-07-09 09:51:03
【问题描述】:
我正在制作一个网站,用户在该网站上反复点击一个按钮来增加他/她的分数。为了防止人们作弊,我想测量每次点击之间的时间量,如果他们的点击速度非常快并且点击之间的时间很短,我想要一个验证码或其他东西。
如何衡量点击之间的时间?
【问题讨论】:
标签: php javascript jquery time click
我正在制作一个网站,用户在该网站上反复点击一个按钮来增加他/她的分数。为了防止人们作弊,我想测量每次点击之间的时间量,如果他们的点击速度非常快并且点击之间的时间很短,我想要一个验证码或其他东西。
如何衡量点击之间的时间?
【问题讨论】:
标签: php javascript jquery time click
点击处理程序可以只维护一个时间戳作为 JavaScript“日期”实例。减去其中两个,您就得到了以毫秒为单位的间隔。
请注意,时钟精度不一定那么好,而且人类可以非常快地产生点击。我认为,Windows 不会为您提供超过 15 毫秒的粒度。
【讨论】:
setTimeout 或 setInterval 遇到这个问题。还是我错了?
我的建议如下:
$('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;
};
}()));
这将以毫秒为单位输出并存储两次点击之间的差异。您可以使用历史数组来获取平均值并检查它是否低于 50 毫秒或其他什么。
平均检查演示:http://jsfiddle.net/TxKjT/2/
【讨论】: