如何避免在浏览器 JavaScript 中双击时(单击鼠标)处理
How to avoid (single) mouse click processing on double click in browser JavaScript?
如果用户双击 HTML 按钮,则在双击事件侦听器之前调用单击事件侦听器。
有没有办法在双击时跳过单击处理(无需跳过箍)?
请记住,如果用户不双击,我希望能够对单击做出反应!
看看 jsfiddle.net 的不言自明的示例。
myEventButton.addEventListener(
'click',
function(/*e*/)
{
myClickDiv.innerHTML = 'Clicked.'; // Gets here first on double click.
});
myEventButton.addEventListener(
'dblclick',
function(/*e*/)
{
myDblClickDiv.innerHTML = 'Double clicked.'; // Gets here last on double click.
});
这是一个解决方案
我不知道是否有适当的方法,但这有效。这个想法是在点击之间保持一个计时器,并且您禁止任何比这更快的点击。这意味着双击时,第一次点击将被记录,但第二次点击太快将被忽略。
当然,你可以把它抽象在一个不错的函数后面,但你明白了。
您修改的代码:
// Added variables to store timers
var minTimeBetweenClicks = 1000;
var lastClickTime = Date.now();
myClearButton.addEventListener(
'click',
function()
{
myClickDiv.innerHTML = '';
myDblClickDiv.innerHTML = '';
});
myEventButton.addEventListener(
'click',
function(/*e*/)
{
// Check the timer before doing anything
if (Date.now() - lastClickTime > minTimeBetweenClicks) {
myClickDiv.innerHTML += ' Clicked.';
lastClickTime = Date.now();
}
});
myEventButton.addEventListener(
'dblclick',
function(/*e*/)
{
myDblClickDiv.innerHTML = 'Double clicked.';
});
PS:我还修改了您的点击代码以在按钮上添加"单击",因此您可以看到双击不会添加两次。
相关文章:
- 单击鼠标,用MySQL数据填充html表单输入字段
- 如何防止用户使用javascript或jquery在链接中单击鼠标中键
- 单击鼠标时如何停止重复功能
- 单击鼠标在画布上绘制一个实心圆
- Jquery检测“;输入“;按键而不是单击鼠标
- 在YouTube视频上单击鼠标静音/取消静音
- 按下esc键或随机单击鼠标时,Jcrop失去焦点
- jquery键并单击鼠标
- 在边界外单击鼠标关闭弹出框
- 尝试在画布中单击鼠标以添加图像
- 如何避免在浏览器 JavaScript 中双击时(单击鼠标)处理
- 在 Firefox 中单击鼠标时无法选择所有输入元素文本
- 在淘汰赛中更改 css 类.js单击鼠标
- 在单击时对元素进行动画处理,并在该元素和其他元素上单击鼠标输入/鼠标离开
- 在jquery中单击鼠标
- 如何在网页上单击鼠标或鼠标悬停时播放部分音频文件
- 我的 js 函数在第二次单击鼠标后被调用
- 单击鼠标时文本输入更改类
- 有没有办法模拟每次单击鼠标左键时按 Ctrl 键
- 如何使用 Raphael.js 在每次单击鼠标时触发旋转动画