从DOM(IE)中删除SWF后如何释放网络摄像头

时间:2014-10-22 15:15:05

标签: javascript html actionscript-3 flash internet-explorer

我有一个简单的Flash应用程序,它显示用户的网络摄像头和包含它的小HTML。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <title>Camtest</title>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <script src="https://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
  </head>
  <body>
    <div id="mySWFApplication">
        <p>AlternativeContent</p>
    </div>
  </body>

我正在使用SWFObject将我的Flash应用程序嵌入到DOM

swfobject.embedSWF("mySWFApplication.swf", "mySWFApplication", "500", "500", "9.0.0");

在SWF应用程序中,我选择了我的相机并授予其访问权限(网络摄像头LED变为绿色)

在某些时候,我想从DOM中删除对象以释放相机:

swfobject.removeSWF("myContent");

在Chrome和FF中,一切都很好。网络摄像头已经发布(LED变暗),可以再次被其他应用程序使用。

但在Internet Explorer中,情况有所不同。尽管swf周围的div元素已从DOM中移除,但相机仍在使用中。

看起来SWF仍然存放在Internet Explorer的内存中。

目前唯一有帮助的是重新加载浏览器窗口。

我在IE中看到两种可能的解决方案来解决这个问题:

  • 刷新页面(强制重新加载)
  • 提供ActionScript / JS桥接方法以释放相机

有没有其他方法可以在不依赖Actionscript或重新加载的情况下从内存中删除SWF?

1 个答案:

答案 0 :(得分:1)

我认为释放摄像头的最佳方法必须是来自闪光灯本身,添加执行此操作的动作:your_video_player.attachCamera(null);然后您可以使用按钮或{ {1}}和javascript。

如果您无法触摸swf,您还有其他两种方式:

1 - 将您的swf页面显示为 iframe ,然后您可以将其卸载(iframe)。

2 - 您可以将swf页面加载到弹出窗口