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;
(В противном случае, вы можете опубликовать ссылку на код / сайт, и мы сможем проверить это?)