我想从我的JSON文件中获取youtube视频ID。将使用正则表达式函数提取id。
当我将id
作为youtube函数onYouTubeIframeAPIReady
的参数传递时,我会收到错误:Uncaught TypeError: YT.Player is not a function
。
我的正则表达式功能:
regexVideoId: function(url) {
var regExp = /^.*((youtu.be\/)|(v\/)|(\/u\/\w\/)|(embed\/)|(watch\?))\??v?=?([^#\&\?]*).*/;
var match = url.match(regExp);
console.log(match[7]);
onYouTubeIframeAPIReady(match[7]);
// return (match&&match[7].length==11)? match[7] : false;
},
Youtube功能:
var player;
function onYouTubeIframeAPIReady(id) {
player = new YT.Player('youtube-video', {
height: '390',
width: '640',
videoId: id,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}
调用正则表达式功能并发送youtube网址:regexVideoId(data.youtube);
我使用了Youtube Javascript API。正则表达式函数有效,它将从它的id中提取视频。只有将video id
传递给函数onYoutubeIframeAPIReady
才能正常工作,并且错误为is not a function
。
我做错了什么? 提前谢谢。
答案 0 :(得分:1)
你没有提供足够的代码,所以这有点猜测工作。
然而,问题似乎是您直接调用@Access(PROPERTY)
,可能是在youtube API完全加载之前。 (Youtube API Docs中提供的示例使用异步加载)
你可以通过反转逻辑来解决这个问题。不要在onYouTubeIframeAPIReady
函数中明确调用onYouTubeIframeAPIReady
,而是让regexVideoId
构造函数调用YT.Player
函数:
regexVideoId