我正在尝试使用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">
有什么想法吗?
答案 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);