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