如何将 javascript 函数从子 flash swf 文件插入 HTML 文档?
Posted
技术标签:
【中文标题】如何将 javascript 函数从子 flash swf 文件插入 HTML 文档?【英文标题】:How to insert javascript functions to an HTML document from the child flash swf file? 【发布时间】:2012-02-21 11:44:46 【问题描述】:我需要使用 actionscript 3 从 flash swf 文件中执行一些 javascript 字符串代码。 我读到可以通过使用 externalinterface.call 函数将 JavaScript 代码传递给父 html 文档来完成。然后我假设如果我在第一次使用 externalinterface.call 函数时可以在 HTML 文档中的 JavaScript 代码中声明函数会更快;如果 flash 代码重复调用 JavaScript 代码。所以让我问你如何做到这一点。有关详细信息,要加载的任何 JavaScript 在设计时都是未知的,我无法准备要加载的 JavaScript 文件。
【问题讨论】:
你尝试了什么?只需在 Google 上搜索“externalinterface”即可获得 10 个使用教程。 @Laurent,您可以搜索正确答案,因为您知道正确的关键字。就我而言,Google 搜索中的 1000 个教程仅描述了如何在 html 文件中调用 javascript 函数。如果没有合适的关键字,就不可能从他们那里找到我的案例。 【参考方案1】:你可以试试这个:
var js:XML = <code><![CDATA[
function()
window.myFunc = function(arg)
alert(arg);
]]></code>;
ExternalInterface.call(js);
以后您可以安全地调用:
ExternalInterface.call("myFunc", "myArgument");
请注意,使用 xml 只是一种轻松编写 Javascript 代码的方式(带有缩进和多行);)
【讨论】:
【参考方案2】:仅供参考,除了使用 XML 对象,您还可以使用包含 JavaScript 代码的字符串在 eval 上调用 ExternalInterface。
var myJSCode:String = "window.log = function(msg) if (console) console.log(msg) "
ExternalInterface.call("eval", myJSCode);
然后调用你的函数:
ExternalInterface.call("log", "Hello from ActionScript");
【讨论】:
以上是关于如何将 javascript 函数从子 flash swf 文件插入 HTML 文档?的主要内容,如果未能解决你的问题,请参考以下文章
如何将父组件函数传递给子组件,然后从子 AngularJS 内部调用它
遍历 HTML div 并使用 JavaScript 或 jQuery 从子跨度中提取值
VueJs:如何使用 $emit(optionalPayload) 和 $on 将“计算函数”值从子组件传递给父组件?
将数组从 Flash (AS3) 发送到 JavaScript