Internet Explorer не выгружает SWF при переходе со страницы

Я пишу портал для конференций с использованием OpenMeetings с открытым исходным кодом, который представляет собой приложение Flash, скомпилированное с OpenLaszlo. Итак, у меня есть доступ к исходному коду SWF, который представляет собой смесь разметки Laszlo и JavaScript, но не ActionScript.

Проблема, с которой я сталкиваюсь, заключается в том, что когда пользователи уходят из приложения в Internet Explorer, их микрофон остается подключенным, и они могут слышать, как другая сторона / другая сторона слышит их. Это означает, что IE неправильно уничтожает объект Flash.

У меня были проблемы с воспроизведением этой ошибки в моей собственной системе, но это происходит на компьютере моего коллеги.

Я пытался использовать JavaScript для захвата события unload и установки innerHTML на "", что удаляет объект Flash со страницы, но опять же, микрофон и т. Д. Остается подключенным.

Это происходит только с Internet Explorer. Это серьезная ошибка для нашего программного обеспечения, так как мы имеем дело с образованием, и, следовательно, ученик, остающийся "на связи", не зная, может открыть нам дело!

5 ответов

Опция, описанная здесь, кажется, лучше всего подходит для нас:
http://blog.vokle.com/index.php/2009/03/10/why-ie-doesnt-drop-flash-netconnections-netstreams-and-how-to-fix-it/
Мы также используем функцию "removeSWF" из SWFObject следующим образом:

    <!--[if IE]>
    <script type="text/javascript">
        function cleanupForIE() {
            try {
                //get using the id of your swf instance
                var swf = document.getElementById('myswf');  
                swf.disconnect();
            } catch(e) {
                alert("Error on unload: " + e);
            }
            swfobject.removeSWF("flashContent");
        }
        window.attachEvent("onbeforeunload", cleanupForIE);
    </script>
    <![endif]-->  

Технически возможно добавить эту функцию - если она еще не была добавлена. OpenMeetings теперь является проектом Apache Incubator, просто свяжитесь с разработчиком через список рассылки, и он сможет вам помочь.

К сожалению, я не могу предоставить ссылку, так как это внутренний сайт.

Это просто простая вставка src="..." в div, и при выгрузке я устанавливаю div для innerHTML в "". Это работает не лучше, чем просто закрытие окна браузера, и у меня никогда нет ссылки непосредственно на встраиваемый объект, только на содержащий его div. Я чувствую, что это может быть связано с тем, что фильм все еще "играет". В некоторых результатах поиска в Google есть люди, жалующиеся на подобные проблемы (звук FLV все еще слышен после закрытия окна браузера), и исправление, по-видимому, явно останавливает фильм из ActionScript. (и, конечно, у меня нет такого контроля над скомпилированным фильмом, он сгенерирован из OpenLaszlo)

Возможно, вы можете спросить человека, который занимается разработкой OpenLaszlo, встроили ли они в метод destory прослушивание события Removed From Stage. Там вы явно перестанете играть.

Есть ли какие-либо ссылки JavaScript на оставшийся объект?

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

если да, работает ли явный вызов delete?

 delete window.conf;

(В противном случае, вы можете опубликовать ссылку на код / ​​сайт, и мы сможем проверить это?)

Другие вопросы по тегам