在我的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)如果它与双击事件无关,那么它与什么有关?如何防止它发生?
3)如果它与双击事件有关,我是否做错了什么?(顺便说一句,我想使用所有的preventDefault()
、cancelBubble = true
、stopPropagation()
和return false
,这是否有些过度?为了防止默认行为,我需要的最少代码是什么?)
4)还有其他方法可以实现所需的结果(双击不选择和高亮文本)吗?
我正在使用FF 11进行测试(但最终需要跨浏览器解决方案)。
谢谢!