From kfm-devel Thu May 26 14:54:10 2005 From: David Faure Date: Thu, 26 May 2005 14:54:10 +0000 To: kfm-devel Subject: Re: onload event listeners attached to NodeImpls which fail to be Message-Id: <200505261654.11145.faure () kde ! org> X-MARC-Message: https://marc.info/?l=kfm-devel&m=111711925802126 On Thursday 26 May 2005 16:15, Andrew Coles wrote: > I've looked through the Webcore source to see how they deal with this problem. > It appears that they don't store or use a pointer to the original nodeimpl in > JSLazyEventListener; the important difference is that in parseCode() the > following chunk of code is omitted: > > if (originalNode) > { > // Add the event's home element to the scope > // (and the document, and the form - see KJS::HTMLElement::eventHandlerScope) > ScopeChain scope = listener.scope(); > Object thisObj = Object::dynamicCast(getDOMNode(exec, originalNode)); > if (thisObj.isValid()) { > static_cast(thisObj.imp())->pushEventHandlerScope(exec, scope); > listener.setScope(scope); > } > } > > Removing it causes http://cis.strath.ac.uk/~ac/remangle2.html to no longer > crash Konqueror. But, the code is obviously there for a reason; any offers? Hmm, this comes from a Safari merge in the first place :) (Well, more precisely a discussion with Maciej about scope in event handlers, on which we agreed) I moved that code as part of revision 406282, and Webcore-315 definitely has the storage of the originalNode in JSLazyEventListener. Are you looking at an older webcore? Or an even-more-recent one than 315? -- David Faure, faure@kde.org, sponsored by Trolltech to work on KDE, Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).