Re: removeChild and <use> question

It's known that Firefox doesn't (yet) support the SVGElementInstance DOM  
interface, while Opera does. This is probably what you're seeing.

This means that behavior will differ slightly, since Events can have  
SVGElementInstances as the target (whereas firefox uses the cloned element  
AFAIK, so an element implementing one of the SVG*Element interfaces). This  
small issue is entirely possible to work around in js by checking the  
object type, or existence of particular methods on the SVGElementInstance  
interface. One example here:  
http://files.myopera.com/MacDev_ed/svg/coords/showbbox.js (see "fixes for  
use element").

The drawback of using cloned elements: uses as much RAM as the  
"equivalent" expanded DOM tree. This is however not the case in Opera, we  
use a lightweight object that only implements the SVGElementInstance  
interface which uses less memory than the normal cloned nodes would (as  
you may note SVGElementInstance doesn't inherit from Node, Element or any  
of the SVG*Element interfaces).

Cheers
/Erik

On Tue, 12 Jan 2010 22:51:24 +0100, Patrick Dengler <patd@microsoft.com>  
wrote:

> We also saw similar inconsistent behaviors with events on <use>
>
> We found that the behavior of <use> referring to an element which is  
> currently not the part of DOM but added later to DOM via DOM  
> manipulation are handled differently in different browsers.
>
> These seem like good topics for our next conference call.
>
> -----Original Message-----
> From: www-svg-request@w3.org [mailto:www-svg-request@w3.org] On Behalf  
> Of Jeff Schiller
> Sent: Tuesday, January 12, 2010 1:31 PM
> To: Boris Zbarsky; www-svg
> Subject: Re: removeChild and <use> question
>
> Boris,
>
> Thanks for the explanations.
>
> On Tue, Jan 12, 2010 at 3:28 PM, Boris Zbarsky <bzbarsky@mit.edu> wrote:
>> On 1/12/10 4:08 PM, Jeff Schiller wrote:
>>> would result in someUsePointingToFoo still holding a reference to a
>>> <use>  element, but it is now detached from the DOM
>>
>> Not at all.  It's in the DOM just fine.  However its cloned instance  
>> tree is
>> now gone.  It's the same as if you had a <use xlink:href="#foo"> and  
>> had no
>> node with id="foo" in the document.
>>
>
> Ok, I took Patrick's email to mean that the use element itself was
> removed from the DOM.  This is what I found odd.
>
> Jeff
>
>
>


-- 
Erik Dahlstrom, Core Technology Developer, Opera Software
Co-Chair, W3C SVG Working Group
Personal blog: http://my.opera.com/macdev_ed

Received on Wednesday, 13 January 2010 14:22:04 UTC