ExternalInterface 为我提供了在使用多个参数时停止脚本的选项。为啥?
Posted
技术标签:
【中文标题】ExternalInterface 为我提供了在使用多个参数时停止脚本的选项。为啥?【英文标题】:ExternalInterface gives me an option of stopping the script when using multiple parameters. Why?ExternalInterface 为我提供了在使用多个参数时停止脚本的选项。为什么? 【发布时间】:2012-08-17 06:12:08 【问题描述】:第一版:
ExternalInterface.call("$(document).trigger", "opened_file_chooser");
第二版:
ExternalInterface.call("$(document).trigger('opened_file_chooser')");
如果我使用第一个版本,它会比第二个慢得多。此外,浏览器阻塞,几秒钟后,Firefox 向我显示“脚本没有响应......”的对话框,它为我提供了停止它的可能性。如果我使用第二个版本,对 javascript 的调用是即时的。有没有办法让第一个和第二个一样好用?我认为它更干净(从代码的角度来看)。
【问题讨论】:
只是一个猜测,但由于 ExternalInterface 调用是同步的,它可能在返回之前等待文件选择器的响应。第二个可能有效,因为它只是返回作为整个函数的对象? 如果您在浏览器的 javascript 控制台中执行这些语句,您是否注意到同样的缓慢?我不是 JS 专家,所以这两个语句之间的区别对我来说已经丢失了。但在我看来,当不使用ExternalInterface
而只是直接执行这些语句时,这个问题也应该发生。
@LondonDrugs_MediaServices 调用 ExternalInterface 的两种方式不应该产生相同的结果吗?
@SunilD。 ,如何从浏览器的控制台执行 ExternalInterface.call?这是一个 flash 方法调用。
如果你使用中间人功能,它会改变什么吗?例如。函数 openFileChooser() $(document).trigger('opened_file_chooser'); - 并从闪存调用它?使用单个函数作为 ExternalInterface 调用通常更简洁,因为如果您需要更新 javascript 端,则不必重新编译 flash 端。
【参考方案1】:
尝试设置一个超时,让 ExternalInterface “返回”到 Flash,这将有助于阻止:
ExternalInterface.call("setTimeout","$(document).trigger('opened_file_chooser')","100");
【讨论】:
以上是关于ExternalInterface 为我提供了在使用多个参数时停止脚本的选项。为啥?的主要内容,如果未能解决你的问题,请参考以下文章
Actionscript 3 ExternalInterface,将变量传递给javascript?
Flash AS2.0 与 JavaScript/jQuery (ExternalInterface) 通信
隐藏和显示 swf 时如何判断 ExternalInterface 何时可用
AS2 ExternalInterface:错误:引发了无效异常