是否有一个没有jquery的简单解决方案,在HTML标签内部,会调用而ondblclick不会导致onclick发生?
这总是关闭窗口,虽然它应该只显示警报:
<a href="#" ondblclick="alert('dbl')" onclick="window.close();">X</a>
Run Code Online (Sandbox Code Playgroud)
(它只适用于javascript弹出窗口,因为你无法关闭主窗口window.close();)
我的猜测是,每个解决方案都会遇到问题,双击超时长度因Irvin Dominin aka Edward在上述评论中描述的用户偏好而异:
来自jQuery docs但相关:"将处理程序绑定到同一元素的click和dblclick事件是不可取的.触发的事件序列因浏览器而异,有些在dblclick之前接收了两个click事件,而其他事件只有一个.双击灵敏度(双击检测到的点击之间的最长时间)可能因操作系统和浏览器而异,通常是用户可配置的.
我放弃使用doubleclick并使用CTRL + click代替:
<a href="#" onclick="if(event.ctrlKey) {
alert('CTRL+Mouseclick'); return false;
} else { window.close(); }">X</a>
Run Code Online (Sandbox Code Playgroud)
看到:
我已经用下面的代码解决了这个问题,
<a id="press" href="javascript:void(0)" onclick="singleClick(event)"
ondblclick="doubleClick(event)">Click here</a>
<div id="log"></div>
Run Code Online (Sandbox Code Playgroud)
我的JavaScript将是
var timer;
var status = 1;
function singleClick(event) {
status = 1;
timer = setTimeout(function() {
if (status == 1) {
document.getElementById("log").innerHTML ='I am single click !';
}
}, 500);
}
function doubleClick(event) {
clearTimeout(timer);
status = 0;
document.getElementById("log").innerHTML = 'I am a double click!';
}
Run Code Online (Sandbox Code Playgroud)
请让我知道状态。希望这有帮助。