javascript - 如何使用 ActionScript 从 Flash 动态包含 JavaScript?

标签 javascript flash actionscript-3

我有一个 Flash 影片,需要包含文件中的一些 JavaScript,但我希望能够将其嵌入到任何地方而不需要脚本标记。

有没有办法使用ExternalInterface库包含外部JavaScript文件,以便我稍后可以调用JavaScript包含文件中的方法?

谢谢!

最佳答案

没有多少人意识到这一点,但您可以在 .as 文件中编写内联 Javascript,甚至可以传递值,如下所示:

var someVarInAS : String = 'foo';
var someOtherVarInAS : int = 10;
var jsXML : XML = 
<script type="text/javascript">
    var someVarInJS = '{someVarInAS}';
    var someOtherVarInJS = {someOtherVarInAS};
    <![CDATA[
        //here be code
        alert( 'this comes from flash: ' + someVarInJS + ', ' + someOtherVarInJS );
    ]]>
</script>;


ExternalInterface.call( "function js_" + ( new Date().getTime() ) + "(){ " + jsXML + " }" );

需要注意的几点:

  1. JavaScript 代码内的 {} 将转换为您在其间放置的任何变量的值
  2. cdata 部分使您能够编写任何您想要的 JavaScript 代码,否则编译器可能会提示。
  3. 所有通过externalinterface调用的javascript代码都应该放在一个命名函数中,否则在某些浏览器中将无法工作。在此代码片段中,我采用了一个小技巧( new Date().getTime() )来确保该函数始终具有唯一的名称,并且不会与可能具有相同名称的另一个函数发生冲突。
  4. 不要忘记;后面</script>它告诉编译器你的 javascript 到此结束

关于javascript - 如何使用 ActionScript 从 Flash 动态包含 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1891008/

相关文章:

javascript - 将 PHP 变量传递给 Javascript 函数

javascript - 当检测到外部点击时关闭菜单

JavaScript/jQuery Flash AS3 交互

javascript - Flash 窃取浏览器焦点

c# - 将 Flash 转换为 C# 时出错

actionscript-3 - ActionScript 3、角色选择

jquery - Flash ActionScript 可以检测哪个设备正在打字吗?

javascript - readline-sync 在 Windows 上没有使用正确的编码

actionscript-3 - 如何获得缩放的高度和宽度?

php - 使用 Ajax 将数组发送到 PHP 脚本