我的JavaScript代码中的错误:同步问题?

时间:2014-06-09 23:37:24

标签: javascript youtube

复制步骤:

  • 打开http://jaminweb.com/YoutubePlaylist.html
  • 在视频播放列表中,输入sMqNFAU0tOw(或任何Youtube视频ID)
  • 点击播放视频!
  • JavaScript控制台应该说Uncaught TypeError: undefined is not a function
  • 之类的内容

它来自这部分代码,我尝试使用Google的JavaScript Youtube API连续播放Youtube视频:

                    var atts = { id: "myytplayer" };
                    var params = { allowScriptAccess: "always" };
                    swfobject.embedSWF(thisurl, "playerdiv", "425", "356", "8", null, null, params, atts);
                    var ytplayer = document.getElementById("myytplayer");
                    ytplayer.playVideo(); // <----- problem line
                   }

(API参考:https://developers.google.com/youtube/js_api_reference

我认为可能是因为,当调用playVideo时,元素myytplayer仍然是通过函数swfobject.embedSWF创建的?这是问题吗?

1 个答案:

答案 0 :(得分:0)

是的,这就是问题所在。如果尝试调试脚本并逐步进行,您将看到代码正常工作。但是没有它,你正试图获得仍在创建的对象。

embedSWF需要另外一个可选参数 - callbackFn ,在页面上创建Flash插件成功或失败时调用(SWFObject 2.2 +)({{3 }})。尝试将代码放入获取元素,然后在此类方法中播放视频。