【问题标题】:Is it possible to inject an external javascript reference into the host page from a SWF?是否可以从 SWF 将外部 javascript 引用注入到主机页面中?
【发布时间】:2012-08-23 11:04:32
【问题描述】:

我有一个 SWF 广告需要调用 Facebook API,为此我需要在主机 HTML 页面中提供以下单行引用:

<script type="text/javascript" src="//connect.facebook.net/en_US/all.js"></script>

由于我正在处理广告,因此我无法控制主机页面。我知道我可以将函数注入页面(这里有一个很好的参考:http://www.actionscript.org/resources/articles/745/4/JavaScript-and-VBScript-Injection-in-ActionScript-3/Page1.html),但我还没有找到添加对外部托管脚本的引用的方法。

有谁知道这是否可以做到,如果可以,怎么做?

【问题讨论】:

    标签: javascript actionscript-3 flash


    【解决方案1】:

    只需在文档中动态添加一个 SCRIPT 标签。您可以通过 ExternalInterface 运行匿名函数来做到这一点:

    var js:Array = [
    'var script = document.createElement("SCRIPT")',
    'script.src = "http://connect.facebook.net/en_US/all.js"',
    'var head = document.getElementsByTagName("HEAD")[0]',
    'head.appendChild(script)'
    ];
    ExternalInterface.call('(function(){' + js.join(';') + '})()');
    

    【讨论】:

    • 但是这将如何加载脚本 - 当您将它添加到头部时,DOM 已经完成,并且窗口将完成加载,不是吗?
    • 浏览器肯定会加载脚本。 DOM 永远不会“完整”。
    • 这似乎不起作用。例如,ExternalInterface.available 返回 true,但 ExternalInterface.call( "(function(){alert(\"hello\");})()" ); 不会导致显示警报,并且它也不会导致错误(既未处理也未处理)。可能是什么问题?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-29
    • 2011-10-24
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    相关资源
    最近更新 更多