2011-05-08 150 views
0

因为我一直试图做出一个包含图像和YouTube视频的jQuery循环幻灯片演示,并且能够在播放YouTube视频时暂停循环幻灯片演示,所以我正在绞尽脑汁。jQuery循环 - youtube视频在播放时不会暂停播放幻灯片?

我发现这个例子: How do I attach a jQuery event handler to a YouTube movie?

这似乎工作,以及时,我将它纳入自己的代码:http://jsfiddle.net/waffl/qqWT8/18/

现在,我不知道这是怎么回事,但也如现在似乎工作!

如果任何人有任何想法,它似乎与事件处理程序没有附加有关,但我不明白为什么以前似乎工作的东西突然没有。

+0

我认为你缺少API的初始化字符串: “enablejsapi = 1” - 例如, “http://www.youtube.com/e/VIDEO_ID?enablejsapi=1&version=3”请参阅http://code.google.com/apis/youtube/js_api_reference.html – Mottie 2011-05-08 21:01:00

+0

@fudgey我相信它在' flashvar enablejsapi:1'不是吗?我也尝试添加初始化字符串到swfobject嵌入调用,但它似乎不工作:'swfobject.embedSWF('http://www.youtube.com/v/'+ videos [i] +'&enablejsapi = 1',id,'540','375','9.0.0',false,flashvars,params);' – waffl 2011-05-08 22:46:09

回答

0

我一直有同样的问题,我对你的小提琴做了一些改变,我能够得到它的工作。这里是JavaScript:

var slideshowContainer = $('#slideshow'); 

window.handlePlayerStateChange = function(state) { 
    switch (state) { 
    case 1: 
     // Video has begun playing/buffering 
     slideshowContainer.cycle('pause'); 
     break; 
    case 3: 
     // Video has begun playing/buffering 
     slideshowContainer.cycle('pause'); 
     break; 
    case 2: 
     // Video has been paused/ended 
     slideshowContainer.cycle('resume'); 
     break; 
    case 0: 
     // Video has been paused/ended 
     slideshowContainer.cycle('resume'); 
     break; 
    } 
} 

window.onYouTubePlayerReady = function(id) { 
    var player = $('#' + id)[0]; 

    player.addEventListener('onStateChange', 'handlePlayerStateChange'); 
} 

var videos = ['uCr--23_AW0', 'd8h5ZuPQWZw', 'ur1_aVRLLfA', 'rDcQtg6Bgvo', 'fgJ6DA50thw', 'MD3UldIQaUo', 'IwVpZGgWdWk', 'TvCUvVkGyqQ', 'FGzRvYU0e3Q']; 

var params = { 
    allowfullscreen: 'true', 
    allowscriptaccess: 'always', 
    wmode: 'opaque' 
}; 

for (var i = 0; i < videos.length; i++) { 
    var id = 'video-' + i; 

    var atts = { 
     id: id, 
     name: id 
    }; 

    slideshowContainer.append($('<div/>') 
     .addClass('video-wrapper') 
     .append($('<div/>') 
       .attr('id', id) 
       ) 
    ); 

    swfobject.embedSWF('http://www.youtube.com/v/' + videos[i] + '?enablejsapi=1&playerapiid=' + id + '&version=3', id, '540', '375', '9.0.0', null, null, params, atts); 
} 

slideshowContainer.cycle({ 
    fx: 'fade', 
    timeout: 8000, 
    next: '#next', 
    prev: '#prev' 
});​ 

和工作示例:http://jsfiddle.net/jackbrown/qqWT8/45/