views:

1005

answers:

3

I'm writing a conferencing portal using the open-source OpenMeetings, which is a Flash app that is compiled with OpenLaszlo. So, I have access to the SWF source code which is a mix of Laszlo markup and JavaScript, but not ActionScript.

The problem I am having is that when users navigate away from the app in Internet Explorer, their microphone remains connected and they can hear the other party/other party can hear them. This means IE is not properly destroying the Flash object.

I've had trouble reproducing this bug on my own system, but it does occur on my co-workers computer.

I have tried to use JavaScript to capture the unload event and set innerHTML to "", which removes the Flash object from the page, but again, the microphone etc remains connected.

This only happens with Internet Explorer. This is a major bug for our software, as we deal with education and hence a student remaining "on the line" without knowing could open us up to a lawsuit!

A: 

Are there any JavaScript references to the object that remain?

 //e.g.
 var conf = document.getElementById( 'mySWFObject' );

if so, does explicitly calling delete work?

 delete window.conf;

(Otherwise, can you post a link to the code/site and we can check it out?)

scunliffe
A: 

Unfortunately, I cannot provide a link as it is an internal site.

It is just a simple embed src="..." in a div, and on unload I set div's innerHTML to "". This doesn't work any better than just closing the browser window, and I never have a reference directly to the embed object, just to its containing div. I feel like it may have something to do with the fact that the movie is still "Playing". Some search results on Google have people complaining of similar issues (FLV audio can still be heard after browser window is closed) and the fix seems to be explicitly stopping the movie from ActionScript. (and of course I don't have such control over the compiled movie, it's generated from OpenLaszlo)

Dmitry S.
can you stop it from JavaScript instead?
scunliffe
e.g. use the SWFObject.StopPlay(); method.
scunliffe
A: 

Maybe you can ask the person who does the OpenLaszlo development if they build in a destory method listening to the Removed From Stage event. There you explicit stop all playing.

monkee