我正在使用开源OpenMeetings编写会议门户,这是一个使用OpenLaszlo编译的Flash应用程序。所以,我可以访问SWF源代码,它是Laszlo标记和JavaScript的混合,但不是ActionScript。
我遇到的问题是,当用户离开Internet Explorer中的应用程序时,他们的麦克风保持连接状态,他们可以听到对方/其他方可以听到它们。这意味着IE未正确销毁Flash对象。
我在自己的系统上复制这个bug时遇到了麻烦,但它确实发生在我的同事计算机上。
我尝试使用JavaScript捕获unload事件并将innerHTML设置为“”,这会从页面中删除Flash对象,但麦克风等仍然保持连接状态。
这只适用于Internet Explorer。这是我们软件的一个主要错误,因为我们处理教育问题,因此一名学生仍然“在线”而不知道可以向我们提起诉讼!
答案 0 :(得分:2)
此处介绍的选项似乎最适合我们:
http://blog.vokle.com/index.php/2009/03/10/why-ie-doesnt-drop-flash-netconnections-netstreams-and-how-to-fix-it/
我们还使用SWFObject的“removeSWF”函数,如下所示:
<!--[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 :(得分:1)
不幸的是,我无法提供链接,因为它是一个内部网站。
在div中只是一个简单的嵌入src =“...”,在卸载时我将div的innerHTML设置为“”。这不仅仅比关闭浏览器窗口更好,而且我从来没有直接引用嵌入对象,只是它的包含div。我觉得这可能与电影还在“播放”这一事实有关。谷歌上的一些搜索结果让人抱怨类似的问题(浏览器窗口关闭后仍然可以听到FLV音频),修复似乎是从ActionScript中明确停止了电影。 (当然我对编译的电影没有这样的控制权,它是从OpenLaszlo生成的)
答案 2 :(得分:1)
从技术上讲,可以添加该功能 - 如果尚未添加的话。 OpenMeetings现在是Apache Incubator project,只需通过邮件列表联系开发人员,他们应该能够帮助您。
答案 3 :(得分:0)
是否存在对该对象的任何JavaScript引用?
//e.g.
var conf = document.getElementById( 'mySWFObject' );
如果是,是否明确调用删除工作?
delete window.conf;
(否则,您是否可以发布指向代码/网站的链接,我们可以查看它?)
答案 4 :(得分:0)
也许你可以问一下那些做OpenLaszlo开发的人,如果他们构建了一个跟踪Removed From Stage事件的destory方法。在那里,你明确停止所有游戏。