- From: Garrett Smith <dhtmlkitchen@gmail.com>
- Date: Fri, 11 Jul 2008 00:35:03 -0700
- To: "Anne van Kesteren" <annevk@opera.com>
- Cc: "DOM mailing list" <www-dom@w3.org>
On Thu, Jul 10, 2008 at 11:27 PM, Anne van Kesteren <annevk@opera.com> wrote: > On Fri, 11 Jul 2008 05:29:40 +0200, Garrett Smith <dhtmlkitchen@gmail.com> > wrote: >> >> if(big.addEventListener) { >> big.addEventListener("change", getTimeStamp, true); >> big.attachEvent("submit", getTimeStamp, true); > bad........^ should be: document.addEventListener("submit", getTimeStamp, false); and further down: document.attachEvent("onsubmit", getTimeStamp); ...................................^ (that correction doesn't make any difference in IE; the submit event does not bubble up. However the DOM Events say submit will bubble, at least to document: | submit | The submit event occurs when a form is submitted. | This event only applies to the FORM element. | | * Bubbles: Yes | * Cancelable: Yes | * Context Info: None > Note that with addEventListener if the last argument is true you're > registering for the capture phase. > Then the events should not have fired in bubbling phase. But they did fire in bubbling phase in FF and Webkit. That's a bug, isn't it? | useCapture of type boolean | If true, useCapture indicates that the user wishes to | initiate capture. After initiating capture, all events of the | specified type will be dispatched to the registered | EventListener before being dispatched to any EventTargets | beneath them in the tree. Events which are bubbling upward | through the tree will not trigger an EventListener designated | to use capture. "Events which are bubbling upward through the tree will not trigger an EventListener designated to use capture." Revised example: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> <head> <title> Change </title> </head> <body> <h1>Form Dirty?</h1> <form id='big'> <fieldset id="ff"><legend>legend</legend> <select name='big'> <option>one</option> <option>two</option> </select> <textarea name="a">foo</textarea> <label> <input type="radio" name="df"/>radio </label> <input type="radio" name="df"/>radio <input type="checkbox"/> <input type='text'/> <input type="password"/> <input type="submit" value="go"/> </fieldset> </form> <script> var big = document.getElementById('big'); if(big.addEventListener) { big.addEventListener("change", getTimeStamp, false); document.addEventListener("submit", getTimeStamp, false); } else if(big.attachEvent) { big.attachEvent("onchange", getTimeStamp); document.attachEvent("onsubmit", getTimeStamp); } function getTimeStamp(e){ alert(e.type + ": " + e.timeStamp); } </script> </body> </html> ======================================================= Garrett > > -- > Anne van Kesteren
Received on Friday, 11 July 2008 07:35:39 UTC