Internet Explorer не выгружает SWF при переходе от страницы - PullRequest
4 голосов
/ 19 января 2009

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

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

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

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

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

Ответы [ 5 ]

2 голосов
/ 29 апреля 2011

Опция, описанная здесь, кажется, лучше всего подходит для нас:
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]-->  
1 голос
/ 14 августа 2012

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

1 голос
/ 19 января 2009

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

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

0 голосов
/ 10 февраля 2009

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

0 голосов
/ 19 января 2009

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

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

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

 delete window.conf;

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

...