在我的 HTML 页面上有一个带有一些文本的元素。我指定了在单击该元素时发生的操作。当用户连续多次点击元素时,有时会出现双击,导致文本被选中(高亮),从而破坏外观。我试图使用一个虚拟事件处理程序来阻止它,该处理程序可以防止双击 (dblclick) 事件的默认行为。但是,这似乎不起作用。似乎在我的虚拟事件处理程序甚至执行之前选择并突出显示了文本。
function doNothing(event) {
alert('doNothing'); // Added for debugging. The alert is shown, meaning the event handler is invoked. When I get the alert, the text is already highlighted.
if(!event) event = window.event;
if(event.preventDefault) event.preventDefault();
event.cancelBubble = true;
if(event.stopPropagation) event.stopPropagation();
return false;
}
myElem.onlick = doSomething; // This is the event for a single click. Works well.
myElem.ondblclick = doNothing; // The event handler is called, but the text is already highlighted.
具体问题:
1)我所追求的与双击事件有什么关系吗?(当我看到触发警报时文本已经突出显示,我怀疑这可能是另一种机制。我怀疑(单击)事件的默认行为可能与它有关,但我取消了默认行为(单击)事件也是如此。)
2)如果它与 dblclick 事件无关,那么它与什么有关?我该如何预防?
3)如果是关于 dblclick 事件,我做错了吗?(顺便说一句,我想使用所有preventDefault()
andcancelBubble = true
和stopPropagation()
andreturn false
是一种矫枉过正。为了防止默认行为,我需要的最少代码是多少?)
4)任何其他想法如何获得所需的结果(双击不选择并突出显示文本)?
我正在使用 FF 11 进行测试(但最终需要一个跨浏览器的解决方案)。
谢谢!