在不调用onclick-event的情况下调用ondblclick

rub*_*o77 14 html javascript

是否有一个没有jquery的简单解决方案,在HTML标签内部,会调用而ondblclick不会导致onclick发生?

这总是关闭窗口,虽然它应该只显示警报:

<a href="#" ondblclick="alert('dbl')" onclick="window.close();">X</a>
Run Code Online (Sandbox Code Playgroud)

(它只适用于javascript弹出窗口,因为你无法关闭主窗口window.close();)

rub*_*o77 7

我的猜测是,每个解决方案都会遇到问题,双击超时长度因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)

看到:

按下CTRL捕获onclick-event


Hum*_*ing 5

我已经用下面的代码解决了这个问题

<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)

请让我知道状态。希望这有帮助。