我的JavaScript代码中的Bug:同步性问题

Bug in my JavaScript code: Issue with synchronicity?

本文关键字:同步性 问题 Bug JavaScript 代码 我的      更新时间:2023-09-26

复制步骤:

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

它来自这段代码,我试图使用谷歌的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 ????被创建这是问题所在吗?

是的,这就是问题所在。如果尝试调试脚本并一步一步地进行调试,您将看到代码正在工作。但如果没有这个,你就会试着得到那个还在被创建的对象。

embedSWF还有一个可选参数——callbackFn ,它在页面(SWFObject 2.2+) (https://code.google.com/p/swfobject/wiki/api#swfobject.embedSWF%28swfUrlStr,_replaceElemIdStr,_widthStr,_height)上创建Flash插件成功或失败时调用。请尝试将获取元素并播放视频的代码放入该方法中。