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
-~----------~----~----~----~------~----~------~--~---