我试图从 Javascript 调用 Actionscript 3 方法,但 Chromes 给出了以下错误:
Object #<HTMLEmbedElement> has no method
我把我的 SWF 放到页面如下:
<embed type="application/x-shockwave-flash" src="/subfolder/flash.swf" width="550" height="400" id="myFlash" name="myFlash" bgcolor="#FFFFFF" quality="high" />
ActionScript 3 代码:
function query(fn:String, ln:String):void {
a_txt.text = fn + " " + ln;
}
ExternalInterface.addCallback("queryFlash", query);
最后是 Javascript:
function getFlashMovie(movieName) {
var isIE = navigator.appName.indexOf("Microsoft") != -1;
return (isIE) ? window[movieName] : document[movieName];
}
$(document).ready(function() {
getFlashMovie("myFlash").queryFlash("a", "b");
});
我是不是漏掉了什么?
最佳答案
jQuery 的 ready()
对应于 DOMContentLoaded
事件。这意味着 HTML 页面已完成加载,您可以访问 DOM - 但它不能保证所有嵌入的图像和对象都已完成加载。所以您的 Flash 可能还没有加载。您应该改为监听窗口的 load
事件。
关于javascript - Actionscript 3 javascript 通信 : Object #<HTMLEmbedElement> has no method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6452906/