Apache flex 如何阻止Flash隐私弹出窗口在页面上出现两次?

Apache flex 如何阻止Flash隐私弹出窗口在页面上出现两次?,apache-flex,popup,webcam,Apache Flex,Popup,Webcam,我的网络应用通过网络摄像头和麦克风记录用户。我想将HTML/JS用于控件和内容,因此我创建了两个单独的Flex模块: *“网络摄像头设置”模块,可供您选择摄像头和麦克风输入设备 *一个“记录”模块,允许用户记录并提交记录 当我将其中任何一个嵌入页面时,由于它们访问用户的相机/麦克风对象,Flash会显示隐私对话框,其中显示“[mysite]正在请求访问您的相机和麦克风。如果单击允许,您可能会被录制。” 问题是,如果我在Setup模块中回答Yes,然后使用Javascript将Record模块添加

我的网络应用通过网络摄像头和麦克风记录用户。我想将HTML/JS用于控件和内容,因此我创建了两个单独的Flex模块:
*“网络摄像头设置”模块,可供您选择摄像头和麦克风输入设备
*一个“记录”模块,允许用户记录并提交记录

当我将其中任何一个嵌入页面时,由于它们访问用户的相机/麦克风对象,Flash会显示隐私对话框,其中显示“[mysite]正在请求访问您的相机和麦克风。如果单击允许,您可能会被录制。”

问题是,如果我在Setup模块中回答Yes,然后使用Javascript将Record模块添加到页面中,它会再次显示Privacy对话框

有没有办法避免出现第二个隐私弹出窗口?

我认为,对[mysite]说“是”至少会存储该会话的权限,但显然不是

我所尝试的

我尝试将它们组合成一个SWF,将其添加到页面中一次,并在需要时使用jQuery的append()函数移动DOM元素。但是,当我移动它时,它会重新加载并再次询问我。

想象一下[mysite]是blogger.com还是livejournal.com(或者,如果它仍然存在的话,是geocities.com)。您是否希望该站点上的“是”响应对该域下的每个页面都有效


记住,仅仅因为你承诺(发誓&希望死)不滥用你要求的安全漏洞,并不意味着他们可以允许你拥有这个安全漏洞。

最终,我找到了一个可用的解决方法,类似于我最初尝试的方法(如上)

我将设置和录制模块合并到一个SWF中。我首先显示设置屏幕。当用户点击my页面上的Continue按钮时,Javascript调用SWF中的一个函数以切换到Record屏幕。 然后,我使用绝对定位将包含Flash对象的
移动到页面上的另一个位置,并调整对象的大小

以前,我试图使用jQuery的append()函数在DOM中移动div,这导致SWF重新加载。仅更改位置和大小实际上是可行的。

您可以通过使用LocalConnection类,使用为“设置”组件(已获得授权,意味着一个身份验证和两个SWF)创建的API构建“记录”组件,以简单地发送和接收信号:


这似乎比前面提到的其他实现更接近最佳实践,这些实现闻起来有点黑客味,可能会让将来继承代码库的人感到困惑。

有道理:)。看起来可能会有“每页1个警告”,但我猜如果模块分开,Flash不知道或不关心页面上可能存在的其他Flash对象。。。问题是,我看到过一个将设置与录制分离的站点,但我不知道它是如何完成的:/。如果你知道任何聪明的解决办法,请告诉我!就最佳实践而言,这似乎会更好。不过,我必须做更多的研究,看看它在这种情况下是否有效;这两个组件都使用网络摄像头和麦克风,所以我不知道如何使用信号来解决这个问题。不过,感谢指向LocalConnection的指针,这看起来很有用。虽然这两个组件都“使用”了网络摄像头和麦克风,但通过使用信号调用安装组件上的方法[例如,在录制组件中:LocalConnection.send('setupConnection','startRecording')]您应该能够有效地远程控制已获得使用网络摄像头/麦克风权限的SWF。如果您需要记录SWF中网络摄像头/麦克风的任何媒体数据,您可能会发现通过LocalConnection每次调用40KB消息大小的限制。“信号”是通过“send()”在本地连接上发送的。我曾尝试使用JPEG编码来降低通过本地连接发送的位图数据的大小,在记录器端,使用loader加载ByteArray,它可以工作,但会大幅加载CPU,因此这不是一个解决方案。