代码之家  ›  专栏  ›  技术社区  ›  Sacha Epskamp

离开页面导航时,Internet Explorer不会卸载SWF

  •  4
  • Sacha Epskamp  · 技术社区  · 17 年前

    我正在使用开源OpenMeetings编写一个会议门户,这是一个用OpenLaszlo编译的Flash应用程序。因此,我可以访问SWF源代码,它是Laszlo标记和JavaScript的混合,但不是ActionScript。

    我遇到的问题是,当用户在Internet Explorer中离开应用程序时,他们的麦克风保持连接,他们可以听到另一方/另一方可以听到他们的声音。这意味着IE没有正确地销毁Flash对象。

    我在自己的系统上复制这个错误时遇到了麻烦,但它确实发生在我同事的电脑上。

    我曾尝试使用JavaScript捕获卸载事件,并将innerHTML设置为“”,这将从页面中删除Flash对象,但麦克风等仍然保持连接。

    这只会发生在Internet Explorer上。这是我们软件的一个主要缺陷,因为我们处理教育问题,因此一个学生在不知情的情况下“在线”可能会让我们面临诉讼!

    5 回复  |  直到 17 年前
        1
  •  2
  •   Paul Gregoire    15 年前

    这里介绍的选项似乎最适合我们:
    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]-->  
    
        2
  •  1
  •   Sacha Epskamp    17 年前

    不幸的是,我不能提供一个链接,因为这是一个内部网站。

    这只是一个简单的嵌入src=“…”在div中,卸载时,我将div的innerHTML设置为“”。这并不比关闭浏览器窗口更好,而且我从来没有直接引用嵌入对象,只引用其包含的div。我觉得这可能与电影仍在“播放”这一事实有关。谷歌上的一些搜索结果也有人抱怨类似的问题(浏览器窗口关闭后仍能听到FLV音频),而且修复程序似乎明确地阻止了ActionScript播放这部电影。(当然,我对编译的电影没有这样的控制权,它是从OpenLaszlo生成的)

        3
  •  1
  •   raju-bitter Luca Carlon    14 年前

    从技术上讲,如果尚未添加该功能,则可以添加该功能。开放式会议是一种 Apache Incubator project 现在,只需通过邮件列表与开发人员联系,他们应该能够帮助您。

        4
  •  0
  •   scunliffe    17 年前

    还有对该对象的JavaScript引用吗?

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

    如果是这样,显式调用delete是否有效?

     delete window.conf;
    

    (否则,你能发布代码/网站的链接,我们可以查看它吗?)

        5
  •  0
  •   thgie    17 年前

    也许你可以问做OpenLaszlo开发的人,他们是否用破坏性的方法构建了一个从舞台上移除的事件。好了,别玩了。

    推荐文章