如何在没有“用户交互”的情况下在Flash 10中打开文件对话框

时间:2009-09-25 16:30:01

标签: javascript flash actionscript

我想通过FileReference.browse()打开一个文件对话框但是我得到了#2176错误,这意味着只有在某些用户交互时才能调用此操作。我知道安全方面的考虑因素,但在我的场景中,我有一个薄的flash电影,它只显示一个图像,整个用户界面是用javascript(我大量使用javascript< - > actionscript通信)。

所以问题是 - 您是否认为可以在来自javascript的用户交互时调用FileReference.browse()?

4 个答案:

答案 0 :(得分:1)

没有。如果它像访问剪贴板一样,那么你就不会有运气了。我已经尝试过各种各样的黑客来解决这个问题,从setIntervals到使用apply,我甚至尝试使用ByteArray来直接操作代码。没有肥皂。

就此而言,您必须使用FileReference将文件上传到服务器(除非您使用的是AIR)。如果您需要让Flash查看它,这真的很烦人。

问题在于,当Flash做出这种类型的决定时,他们并没有直接通过代码访问类的这些方面。负责实际完成这些事情的代码被锁定在FlashPlayer中内置的本机代码中。我们是黑盒子。

答案 1 :(得分:1)

当Adobe第一次更新他们的安全模型,并反过来打破了一些运行基于闪存的上传服务时,有一个

pretty

big

stink.

我相信有些人正在通过创建一个透明的Flash电影,并在一个普通的HTML元素之上叠加来解决新的限制,以“欺骗”用户提供Flash应用输入,从中触发互动(他们认为他们点击一个标有'上传'的简单html按钮,他们实际上点击了位于其上方的隐形闪光元素。)

我自己没有尝试过这种方法,但它可能会为您提供搜索可能适合您的解决方案的方向。

答案 2 :(得分:0)

这不是html中object和embed标签的目的吗?当你说整个用户界面是javascript我假设你也在使用html标记,虽然我猜这可能不一定是这种情况。

How to embed a flash file in html

How to start a flash file with javascript

答案 3 :(得分:0)

确定。我找到了这个链接:Flash Player 10 FileReference Changes。显然,这个限制没有解决方法。我想我必须在flash电影中为用户显示提示,以便他/她可以“互动”并允许打开对话框。