javascript - 无法从嵌入式SWF中调用函数

时间:2013-06-28 10:05:28

标签: javascript actionscript-3

我使用函数

创建了一个AS3脚本
public function sayHello():String
{
    return "Hello";
}

我还注册了如下回调

ExternalInterface.addCallback("sayHello", sayHello);

在我的javascript中,我嵌入了SWF文件,如下所示

<script type="text/javascript" src="swfobject.js"></script>
<script type="text/javascript">
  swfobject.embedSWF("HelloWorld.swf", "HelloWorld", "1", "1", "9.0.0");
</script>

但是当我尝试按如下方式调用sayHello方法时

document.getElementById("HelloWorld").sayHello();

我正在Uncaught TypeError: Cannot call method 'sayHello' of undefined

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

如果尚未加载swf,那么document.getElementById("HelloWorld")将返回undefined,从而导致错误。如果是这种情况,你可以尝试几秒钟后调用它。

setTimeout(function() {
    document.getElementById("HelloWorld").sayHello();
},5000);

我还会将该代码放在body onload事件上调用的函数中,即。

...
<head>
<script>

function onload() {
    setTimeout(function() {
        document.getElementById("HelloWorld").sayHello();
    },5000);
}

</script>
...
</head>

<body onload="onload()">
...
</body>