如何从JSON对象

时间:2015-11-18 15:49:15

标签: javascript regex youtube

我想从我的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

我做错了什么? 提前谢谢。

1 个答案:

答案 0 :(得分:1)

你没有提供足够的代码,所以这有点猜测工作。

然而,问题似乎是您直接调用@Access(PROPERTY) ,可能是在youtube API完全加载之前。 (Youtube API Docs中提供的示例使用异步加载)

你可以通过反转逻辑来解决这个问题。不要在onYouTubeIframeAPIReady函数中明确调用onYouTubeIframeAPIReady,而是让regexVideoId构造函数调用YT.Player函数:

regexVideoId

选中此working fiddle