0
错误再现步骤:使用一个回调函数在Javascript
- 打开http://jaminweb.com/YoutubePlaylist.html
- 输入
sMqNFAU0tOw
(或任何其他YouTube视频ID)到播放列表 - 点击播放影片!
- JavaScript控制台应该说,像未捕获
TypeError: undefined is not a function
在尝试诊断问题:
的播放影片!按钮调用下面的函数
this.playAll = function()
{
var vidtexts = document.getElementsByClassName('vidtxt');
for (var i = 0, j = vidtexts.length; i < j; ++i)
{
var thisid = vidtexts[i].value;
if (thisid.length > 0)
{
var thisurl = "http://www.youtube.com/v/" + thisid + "?enablejsapi=1&playerapiid=ytplayer&version=3";
var atts = { id: "myytplayer" };
var params = { allowScriptAccess: "always" };
swfobject.embedSWF(thisurl, "playerdiv", "425", "356", "8", null, null, params, atts, this.playVid);
}
}
}
依次调用下面的函数
this.playVid = function(e)
{
/* Callback function for swfobject.embedSWF(...), to play the video
if the flash player was loaded successfully. */
if (e.success)
{
var ytplayer = document.getElementById("myytplayer");
ytplayer.playVideo();
while (ytplayer.getPlayerState() == 1) {;} // need to change this sometime lol
}
}
控制台错误指向行
ytplayer.playVideo();
所以问题是对象ytplayer
在调用playVideo()
时尚未实例化。我不明白这是为什么,因为当我用我包括作为可选参数的函数
swfobject.embedSWF(thisurl, "playerdiv", "425", "356", "8", null, null, params, atts, this.playVid);
回调函数this.playVid
我写信给调用只有当与ID myytplayer
一个swf
对象被创建ytplayer.playVideo();
。
相关文章: