AS3:阅读DOM

时间:2013-12-19 00:14:06

标签: javascript actionscript-3 dom

我正在尝试使用SWF中的ActionScript读取页面上的特定DIV。 不幸的是,我无法访问页面上的JS。我尝试运行此AS代码时只收到null。

var childTest:String = ExternalInterface.call("function expansionCheck(){return document.getElementById('myDIV').hasChildNodes();}") as String;
ExternalInterface.call('console.log', 'childTest is '+childTest);

我已经确认param已正确设置以实现此目的。

<param name="allowScriptAccess" value="always">

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

这是ExternalInterface.call()方法的语法。

function call(functionName:String, ... arguments):*

- functionName:String — The alphanumeric name of the function to call in the container.

但是你没有传递函数名,而是拥有函数本身。

同样函数expansionCheck()应该在html页面中,以便您可以使用 ExternalInterface.call()方法访问它。

此外, 返回* - 从容器收到的响应。如果调用失败 - 例如,如果容器中没有这样的函数,接口不可用,发生递归(使用Netscape或Opera浏览器),或者存在安全问题 - 返回null并且错误是抛出。

有关ExternalInterface.call()

的更多详细信息,请查看此link

示例:

HTML PAGE

<script>
function expansionCheck(){
    return document.getElementById('myDIV').hasChildNodes();
}
</script>

的ActionScript:

var childTest:String = ExternalInterface.call("expansionCheck") as String;
ExternalInterface.call('console.log', 'childTest is '+childTest);