我有一部flash动画,需要一些来自包含文件的JavaScript,但我希望能够将它嵌入任何地方而不需要脚本标记。
有没有办法使用ExternalInterface库包含外部JavaScript文件,以便稍后调用JavaScript包含文件中的方法?
谢谢!
答案 0 :(得分:8)
没有多少人意识到这一点,但您可以在.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 + " }" );
有几点需要注意:
new Date().getTime()
)来确保函数始终具有唯一的名称,并且不能与可能具有相同名称的另一个名称冲突。;
后面</script>
它会告诉编译器你的javascript结束了答案 1 :(得分:4)
javascript可以做的一切,可以使用externallinterface完成。我认为最好的方法是将js脚本移植到ac。
这是您可以添加标记的方式:
ExternalInterface.call("document.getElementsByTagName('head')[0].appendChild(document.createElement('script'))");
ExternalInterface.call("document.getElementsByTagName('script')[document.getElementsByTagName('head')[0].getElementsByTagName('script').length-1].setAttribute('type', 'text/javascript')");
ExternalInterface.call("document.getElementsByTagName('script')[document.getElementsByTagName('head')[0].getElementsByTagName('script').length-1].setAttribute('src', 'http://your.server/your.js')");