First of all, I believe based on what you wrote that the subject is 
misleading, as you're not really describing a "memory" leak situation. So 
I've changed this thread subject to be more on target with your question.

Second, to address your question... There is no underlying "div" to 
preserve, because once you target a div with embedSWF, the div is 
*replaced*, not appended to.  This means that the only way to remove the swf 
from the DOM is to completely remove it, which has the destructive effect of 
now having removed any trace of what you originally targeted and replaced.

Most people who ask this question, in regards to cycling through 
embedSWF()/removeSWF() repetitions, find it easiest to instead have a 
container div that you drop placeholder divs into on-the-fly before calling 
embedSWF to replace them with an OBJECT.

So, for instance:

<script>
function recycleSWF(swfID) {
    swfobject.removeSWF(swfID);
    $("<div></div>").attr("id",swfID).appendTo("#myholder");   // jquery 
used for simplicity sake, can be done a number of ways
    swfobject.embedSWF("my.swf",swfID,...);
}
...
// on some event, like a button click:
   recycleSWF("myobj");
...
</script>

<body>
<div id="myholder">  <!-- will get continually get a div placeholder thrown 
into it and then replaced by the SWF -->  </div>
</body>

This method should work pretty solidly for you, and shouldn't have any 
memory leak issues. Just take slight extra care to make sure your CSS 
accounts for an extra container div around your swf elements.


--Kyle





--------------------------------------------------
From: "Tomizechsterson" <[email protected]>
Sent: Wednesday, June 17, 2009 2:38 PM
To: "SWFObject" <[email protected]>
Subject: memory leak in IE7 with swfobject 2.2

>
> It seems like there's still something not right about the way this
> object handles memory.  Our web app uses swfobject to display a flash
> module that allows the user to view an image and manipulate it with
> pan, zoom, etc.  The way this works is by calling swfobject.embedSWF,
> getting the object with swfobject.getObjectById, and calling a
> function within that returned object passing in the url of the image
> to display.
>
> There doesn't appear to be any function to call that can clear the
> swfobject from memory, and allow it to be recreated again later.
> swfobject.removeSWF appears to eliminate the div that houses it
> entirely,  making any subsequent calls to swfobject.embedSWF have no
> effect, which in turn makes the object returned from
> swfobject.getObjectById return a null object.
>
> Would there be a way to add functionality to swfobject to dispose of
> it, but keep the underlying div element intact, to allow for re-
> embedding?  Unless there's another way to do this, which I'm foolishly
> missing, of course..
> >
> 

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"SWFObject" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/swfobject?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to