Javascript 计算一秒钟内鼠标单击的次数
嗨,我正在开发一个我想提高性能的应用程序。(我知道这个问题有点长,我道歉。) 我将详细解释它是一个只使用qtscript/qscript(类似javascript)而不使用html的投标应用程序 当一个用户点击一个按钮时,我想指向一个文本字段(对于一个普通用户来说,可以是每秒点击1或2次)。但是用户疯狂地点击按钮(每秒5-10次点击-是的,有些人就是这样点击的),这会降低性能,比如显示延迟量,因为每次点击都指向文本字段 我正在考虑一些解决方法,比如如果用户在1秒内点击超过3次,我们只在最后一次点击后调用焦点功能-我不知道这是一个正确的解决方案,如果你们知道更多,请建议。另一个问题是我不能使用setInterval()和clearInterval()Javascript 计算一秒钟内鼠标单击的次数,javascript,qt,qtscript,Javascript,Qt,Qtscript,嗨,我正在开发一个我想提高性能的应用程序。(我知道这个问题有点长,我道歉。) 我将详细解释它是一个只使用qtscript/qscript(类似javascript)而不使用html的投标应用程序 当一个用户点击一个按钮时,我想指向一个文本字段(对于一个普通用户来说,可以是每秒点击1或2次)。但是用户疯狂地点击按钮(每秒5-10次点击-是的,有些人就是这样点击的),这会降低性能,比如显示延迟量,因为每次点击都指向文本字段 我正在考虑一些解决方法,比如如果用户在1秒内点击超过3次,我们只在最后一次点
任何帮助都将不胜感激。示例。xhtml-没有框架,正文中没有脚本元素,并计算左键和右键单击次数 此外,您还可以添加
e.preventDefault()匿名onclick
事件函数末尾的code>。请记住,如果您试图保护内容,您最终将无法抵御任何足够聪明的人,他们会意识到,如果内容已经在他们的计算机上(内存、缓存等),那么他们已经拥有了它。如果您试图保护图像,则必须使用水印
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Click Counter</title>
<script type="application/javascript">
//<![CDATA[
var click_left = 0;
var click_right = 0;
window.onclick = function(e)
{
if (e.which==1) {click_left++;}
else if (e.which==3) {click_right++;}
alert('Left clicks: '+click_left+'\n\nRight Clicks: '+click_right);
}
//]]>
</script>
</head>
<body>
<div><p>Left or right click</p></div>
</body>
</html>
点击计数器
//
左键或右键单击
示例。xhtml-正文中没有框架,没有脚本元素,并且计算左键和右键单击次数
此外,您还可以添加e.preventDefault()匿名onclick
事件函数末尾的code>。请记住,如果您试图保护内容,您最终将无法抵御任何足够聪明的人,他们会意识到,如果内容已经在他们的计算机上(内存、缓存等),那么他们已经拥有了它。如果您试图保护图像,则必须使用水印
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>Click Counter</title>
<script type="application/javascript">
//<![CDATA[
var click_left = 0;
var click_right = 0;
window.onclick = function(e)
{
if (e.which==1) {click_left++;}
else if (e.which==3) {click_right++;}
alert('Left clicks: '+click_left+'\n\nRight Clicks: '+click_right);
}
//]]>
</script>
</head>
<body>
<div><p>Left or right click</p></div>
</body>
</html>
点击计数器
//
左键或右键单击
我想看看的油门功能
_.throttle = function(func, wait, options) {
var context, args, result;
var timeout = null;
var previous = 0;
options || (options = {});
var later = function() {
previous = options.leading === false ? 0 : new Date;
timeout = null;
result = func.apply(context, args);
};
return function() {
var now = new Date;
if (!previous && options.leading === false) previous = now;
var remaining = wait - (now - previous);
context = this;
args = arguments;
if (remaining <= 0) {
clearTimeout(timeout);
timeout = null;
previous = now;
result = func.apply(context, args);
} else if (!timeout && options.trailing !== false) {
timeout = setTimeout(later, remaining);
}
return result;
};
};
我想看看的\节流阀功能
_.throttle = function(func, wait, options) {
var context, args, result;
var timeout = null;
var previous = 0;
options || (options = {});
var later = function() {
previous = options.leading === false ? 0 : new Date;
timeout = null;
result = func.apply(context, args);
};
return function() {
var now = new Date;
if (!previous && options.leading === false) previous = now;
var remaining = wait - (now - previous);
context = this;
args = arguments;
if (remaining <= 0) {
clearTimeout(timeout);
timeout = null;
previous = now;
result = func.apply(context, args);
} else if (!timeout && options.trailing !== false) {
timeout = setTimeout(later, remaining);
}
return result;
};
};
首先,您应该添加检查,确保用户单击某个按钮后要选择的文本编辑已具有焦点。这将大大减少事件队列上的负载
第二,您可以实现自己的按钮(通过子类化)并使用选项,例如忽略在特定(小)间隔内的单击。如果用户开始快速生成点击,您还可以以某种方式在按钮上“可视化”它,向用户显示您的应用程序对用户输入的反应有限,并在指定的超时后将其关闭 首先,您应该添加检查,确保用户单击某个按钮后要选择的文本编辑已具有焦点。这将大大减少事件队列上的负载
第二,您可以实现自己的按钮(通过子类化)并使用选项,例如忽略在特定(小)间隔内的单击。如果用户开始快速生成点击,您还可以以某种方式在按钮上“可视化”它,向用户显示您的应用程序对用户输入的反应有限,并在指定的超时后将其关闭 使用数组计算每个索引代表100ms的单击次数(使用超时更改当前索引,mod array length),使其尽可能长(至少一秒钟),对其执行平均值。您能在第一次单击后暂时禁用按钮吗?@PaulS。谢谢……我会试试的。抱歉,Jeffman,这是一个竞标应用程序,所以几秒钟的时间非常重要(客户会抱怨只损失了1美元)。使用数组计算每个索引代表100ms的点击次数(使用超时更改当前索引,mod array length),使其尽可能长(至少一秒钟),对它进行平均。你能在第一次点击后暂时禁用按钮吗?@PaulS。谢谢……我会试试的。抱歉,Jeffman,这是一个竞价应用程序,所以几秒钟的时间非常重要(客户会抱怨只损失了1美元)。谢谢John,我非常感谢您的帮助,不幸的是,我的应用程序中没有使用HTML,它不支持本机javascript功能,如alert、window.onclick events等。谢谢您的时间。谢谢John,我真的很感谢您的帮助,不幸的是我的应用程序中没有使用HTML,它不支持本地javascript函数,如alert、window.onclick events等。谢谢你抽出时间。