2010-01-11 41 views
0

好吧,我有一个Flex应用程序,我将回调方法是这样的:Javascript:Flash回调方法会产生错误,首先无法使用alert()?

private function init():void 
{ 
    ExternalInterface.addCallback("playVideo", playVideo); 
} 

private function playVideo(videoSource:String):Boolean 
{ 
    videoDisplay.source = videoSource; 
    return true; 
} 

我用JavaScript调用它是这样的:

function showVideo(video) 
{ 
    document.getElementById("video_overlay").style.display = "block"; 
    //alert('no error'); 
    document.getElementById("MiniMacVideoPreview").playVideo('https://www.kranichs.com/instore/minimac/videos/'+video); 
} 

我得到这个JavaScript错误:

Object does not support this property or method.

但是,如果我先取消注释并运行警报。我没有错误,它完美的作品。

我的第一个想法是,警报是购买时间,直到脚本可以执行,所以我试图在setTimeout()内运行脚本,但没有奏效。

任何想法?

谢谢!

+0

出于好奇,什么时候你showVideo函数被调用? – 2010-01-11 20:39:12

+0

好吧,就是这样,有一个用户可以点击播放的视频列表。当用户点击一个图像时,该功能被调用。这就是我使用回调的原因。 – 2010-01-12 14:13:40

回答

2

我会尝试将您的代码放入类似jquery的 $(window).load函数中。我有一种感觉,你是完全正确的。当您关闭警报时,dom和内容将完成加载,您可以制作ExternalInterface回调方法。

$(window).load

否则,如果你正在使用SWFObject,你可以不喜欢

swfobject.addLoadEvent(function() { 
    $("#swf_id").get(0).inited(callSomeOtherFunction()); 
}); 
+0

+1,用于在调用SWF对象之前暗示DOM完全加载,但我不会仅仅为此使用JQuery。一个简单的window.onload = function {//};就足够了。 – 2010-01-11 20:40:15