onload event listeners attached to NodeImpls which fail to be attached
David Faure
faure at kde.org
Thu May 26 15:54:10 BST 2005
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<DOMNode*>(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 at kde.org, sponsored by Trolltech to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
More information about the kfm-devel
mailing list