2011-05-08 154 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/