我有一个 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 + " }" );
需要注意的几点:
- JavaScript 代码内的 {} 将转换为您在其间放置的任何变量的值
- cdata 部分使您能够编写任何您想要的 JavaScript 代码,否则编译器可能会提示。
- 所有通过externalinterface调用的javascript代码都应该放在一个命名函数中,否则在某些浏览器中将无法工作。在此代码片段中,我采用了一个小技巧(
new Date().getTime()
)来确保该函数始终具有唯一的名称,并且不会与可能具有相同名称的另一个函数发生冲突。 - 不要忘记
;
后面</script>
它告诉编译器你的 javascript 到此结束
关于javascript - 如何使用 ActionScript 从 Flash 动态包含 JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1891008/