在HTML标签内是否有一个没有jquery的简单解决方案会调用ondblclick
而不会导致onclick
发生?
这总是关闭窗口,虽然它应该只显示警告:
<a href="#" ondblclick="alert('dbl')" onclick="window.close();">X</a>
(它仅适用于javascript弹出窗口,因为您无法使用window.close();
关闭主窗口)
答案 0 :(得分:7)
我的猜测是,每个解决方案都会遇到问题,双击超时长度因上述评论中 Irvin Dominin aka Edward 所描述的用户偏好而异:
来自jQuery文档,但相关:“将处理程序绑定到不可取 同一元素的click和dblclick事件。序列 触发的事件因浏览器而异,有些不同 在dblclick之前接收两个单击事件,其他只有一个。 双击灵敏度(检测到的点击之间的最长时间 作为双击)可能因操作系统和浏览器而异,而且是 通常是用户可配置的。“
我放弃使用双击并使用CTRL +点击:
<a href="#" onclick="if(event.ctrlKey) {
alert('CTRL+Mouseclick'); return false;
} else { window.close(); }">X</a>
请参阅:
答案 1 :(得分:4)
我已使用以下代码解决,
<a id="press" href="javascript:void(0)" onclick="singleClick(event)"
ondblclick="doubleClick(event)">Click here</a>
<div id="log"></div>
我的 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!';
}
请让我知道状态。希望这有帮助。
答案 2 :(得分:2)
我认为这是一个难以处理的情况,你可以使用超时,但你无法确定正确的行为。
在jQuery(但也是vanilla)文档中有一个重要的注释,告诉我们避免单击和双击的处理:
不建议将处理程序绑定到click和dblclick 同一元素的事件。触发的事件顺序各不相同 从浏览器到浏览器,有些人之前接收过两次点击事件 dblclick和其他人只有一个。双击灵敏度(最大值 检测为双击的点击之间的时间可能会有所不同 操作系统和浏览器,通常是用户可配置的。
因此,简而言之:
答案 3 :(得分:1)
JS:
var single;
HTML:
<a href="#"
ondblclick="single=0; alert('dbl')"
onclick="single=1; setTimeout(function(){
if (single) window.close();
},300);">X</a>
答案 4 :(得分:0)
从您的代码中看起来您希望两者都能根据点击次数而工作,那么最好在点击之间引入一个短暂的超时并相应地运行相应的功能。您可以查看here。
答案 5 :(得分:0)
我知道你不想为你的问题做些什么,但这是一种轻松使用点击和双击的方法:
如果您需要通过单击选择对象(或保存变量),则可以使用javascript调用&#34; href&#34;中的函数。
然后你可以使用&#34; ondblclik()&#34;直接编辑注册表,而不单击编辑按钮。
&#34; href&#34;中的功能总是被执行,因此不要使用&#34; alert()&#34;进行测试,您将无法双击,因为消息窗口将打开。它运行2次,然后执行可能有问题的操作,但不保存或更新变量。
function clickMe(c){
var link = document.getElementById('link');
link.innerHTML = "Clicked: "+c;
}
&#13;
<a id="link" href="javascript:clickMe(1);void(0);" ondblclick="clickMe(2);">Click Me</a>
&#13;