错误再现步骤:
sMqNFAU0tOw
(或任何其他Youtube视频ID)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
,仅当已创建标识为ytplayer.playVideo();
的{{1}}对象时,我才会调用swf
。
相关文档:
答案 0 :(得分:0)
这适用于chrome。在IE 10中。
VideoPlayer = function () {
this.addVideo = function () {
var newVidElement = document.createElement("div");
newVidElement.className = "videl";
newVidElement.innerHTML = "<p><textarea class='vidtxt'></textarea><img class='rembtn' src='remicon.png' width=20 height=20></img></p>";
document.getElementById("vidplaydiv").appendChild(newVidElement);
}
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
}
}
}