W3C home > Mailing lists > Public > www-dom@w3.org > April to June 2011

RE: Click event on button element when event targets of the associated mousedown and mouseup are different

From: Jacob Rossi <Jacob.Rossi@microsoft.com>
Date: Fri, 6 May 2011 00:55:43 +0000
To: "Olli@pettay.fi" <Olli@pettay.fi>, Ryosuke Niwa <rniwa@webkit.org>
CC: "www-dom@w3.org" <www-dom@w3.org>
Message-ID: <D0BC8E77E79D9846B61A2432D1BA4EAE028F448B@TK5EX14MBXC110.redmond.corp.microsoft.com>
> -----Original Message-----
> From: Olli Pettay [mailto:Olli.Pettay@helsinki.fi]
> Sent: Thursday, May 05, 2011 6:04 AM
> To: Ryosuke Niwa
> Cc: www-dom@w3.org; Jacob Rossi
> Subject: Re: Click event on button element when event targets of the associated
> mousedown and mouseup are different
> 
> On 04/16/2011 02:20 AM, Ryosuke Niwa wrote:
> > On Fri, Apr 15, 2011 at 2:54 AM, Olli Pettay <Olli.Pettay@helsinki.fi
> > <mailto:Olli.Pettay@helsinki.fi>> wrote:
> >
> >     Nope, it is not the DOM 3 Events definition of click which leads to
> >     that bug. It is the hit testing. In Firefox hit testing leads mouse
> >     events to be dispatched to button element and click event dispatching to
> >     work per the spec also in this case.
> >
> >
> > Oh, sure.  I didn't mean that Firefox's behavior is due to DOM Level 3
> > Events.  I only referred to it to be the cause of the WebKit bug.
> >
> > On Fri, Apr 15, 2011 at 2:59 AM, Olli Pettay <Olli.Pettay@helsinki.fi
> > <mailto:Olli.Pettay@helsinki.fi>> wrote:
> >
> >         Nope, it is not the DOM 3 Events definition of click which leads
> >         to that
> >         bug. It is the hit testing. In Firefox hit testing leads mouse
> >         events to
> >         be dispatched to button element and click event dispatching to
> >         work per the spec also in this case.
> >
> >
> >     I could still add that the reason for Firefox's behavior is HTML 4 spec
> >     "Buttons created with the BUTTON element function just like buttons
> >     created with the INPUT element, but they offer richer rendering
> >     possibilities"
> >
> >
> > I see. That's a reasonable argument. In fact, IE7 / IE8 seem to have
> > the same behavior.
> >
> > Should D3E define hit testing? I feel like D3E is a better place to
> > spec this than HTML5 but I'm not even sure if we can spec precisely
> > because there might be some platform/browser-specific behavior that
> > needs to be maintained.
> >
> > Now putting hit-testing problem aside, do you think we should only
> > fire a click event when target nodes match?
> >
> > If there are no strong oppositions, *I'd like to propose to change the
> > spec to always fire click events on the lowest common ancestor* so
> > that websites can at least catch the event on button element in the
> > said situation.
> Well, the button element behavior depends on hit testing.
> Couldn't webkit do what Gecko/IE7/IE8/Opera do?
> 
> 
> >
> > IE9 seems to special case button element and doesn't fire click event
> > when mousedown happens inside button and mouseup happens elsewhere
> but
> > that's an edge case that might not be worth spec'ing right now.
> 
> 
> Jacob, do you know why IE9 doesn't handle click event according to D3E?
> 

This is not the behavior I'm witnessing in IE9. I see IE9 matching Gecko/IE7/IE8: all events target the button.
I think this should be defined, but in HTML5 because it's specific to the BUTTON element. 
Here's my test page:

<!DOCTYPE html>
<html>
<head>
	<title>BUTTON mouse events targeting</title>
</head>
<body>

<button> www <span> DOM </span> level 3</button>

<div id="log"></div>
<script>
function log(e) { 
	e = e || window.event; 
	t = e.target || e.srcElement;
	document.getElementById("log").innerHTML += e.type + ": " + t.tagName + "<br>";
}
window.onload = function(){
	if(window.addEventListener) {
		window.addEventListener("mousedown",log,false);
		window.addEventListener("mouseup",log,false);
		window.addEventListener("click",log,false);
	}else{
		document.attachEvent("onmousedown",log);
		document.attachEvent("onmouseup",log);
		document.attachEvent("onclick",log);
	}
 }
</script>
</body>
</html>

> 
> -Olli
> 
> 
Received on Friday, 6 May 2011 00:56:11 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Friday, 22 June 2012 06:14:07 GMT