[Javascript] Want to trap both click and double-click
Paul Novitski
paul at juniperwebcraft.com
Tue Dec 19 11:59:44 CST 2006
>On Mon, 18 Dec 2006 17:01:46 -0800 Paul Novitski wrote:
>Is the ondblclick event not well-supported cross-browser?
At 12/19/2006 06:07 AM, Mike Dougherty wrote:
>[iirc] the last time I looked at it, the
>dblclick method was an IE extension and is not supported by Fx.
Here's a little research I did this morning, not
yet backed up by personal experimention with event handlers:
On Peter-Paul Koch's mouse events page
<http://www.quirksmode.org/js/events_mouse.html>
there's a demo that shows the following events firing on double-click:
mousedown
mouseup
click
mousedown
mouseup
click
dblclick
(I get identical results in both Firefox 2.0 and IE 6.)
That is to say, both clicks are registered
singly, then dblclick is added to the pile once
the system has had a chance to measure the
interval between the clicks. Therefore in order
for dblclick to predominate it needs to cancel
any conflicting click, mousedown, and mouseup
events using a method such as the delay Mike described on December 18th.
Koch comments:
"The dblclick event is rarely used. Even
when you use it, you should be sure never to
register both an onclick and an ondblclick event
handler on the same HTML element. Finding out
what the user has actually done is nearly impossible if you register both.
"After all, when the user doubleclicks
on an element one click event takes place before
the dblclick. Besides, in Netscape the second
click event is also separately handled before the
dblclick. Finally, alerts are dangerous here, too.
"So keep your clicks and dblclicks well
separated to avoid complications."
http://www.quirksmode.org/js/events_mouse.html#dblclick
dblclick is listed in the Mozilla Developer
Center's Gecko DOM Reference
<http://developer.mozilla.org/en/docs/DOM:element.ondblclick>
as an element event, with the footnote, "DOM
Level 0. Not part of specification."
from <http://www.w3.org/TR/DOM-Level-2-Events/glossary.html#dt-DOM-Level-0>:
The term "DOM Level 0" refers to a mix
(not formally specified) of HTML document
functionalities offered by Netscape Navigator
version 3.0 and Microsoft Internet Explorer
version 3.0. In some cases, attributes or methods
have been included for reasons of backward compatibility with "DOM Level 0".
On the Event Listener page, dblclick is not listed:
http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-eventgroupings-mouseevents-h3
Instead, the initMouseEvent event has a detailArg
parameter, defined as "Specifies the Event's mouse click count."
Perhaps it was decided that, rather than treating
double-click as a special case, it would be
better to devise a general system for responding
to N number of clicks to accommodate future GUI conventions more naturally.
However, for what it's worth, it does appear that
contemporary browsers do still have dblclick in their event vocabulary.
Regards,
Paul
More information about the Javascript
mailing list