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:错误:引发了无效异常

使用 jquery 的 AS3 ExternalInterface 调用

ActionScript:fscommand 与 ExternalInterface