- 我希望将很多视频加载到页面上,没有什么花哨的
- 视频ID存储在数据库中 - > $滑动[ '消息']
- 我可以让它只加载一个视频。其他人都是空白的
- 它在一个循环中,当种类== youtube时,它会尝试将视频放入。
if($slide['kind'] == 'youtube'){
?>
<li>
<div class="info<?php echo $count+1; ?>">
<h1><?php echo $slide['title']; ?></h1>
<div id="ytplayer<?php echo $count+1; ?>" class="youTube-viewer"></div>
<script>
var video = '<?php echo $slide['message']; ?>';
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubePlayerAPIReady() {
player = new YT.Player('ytplayer<?php echo $count+1; ?>', {
height: '365',
width: '648',
videoId: video,
playerVars: {
'rel': 0,
'enablejsapi': 1,
}
});
}
</script>
<h2><?php echo $slide['name']; ?></h2>
</div>
</li>
<?php
}
答案 0 :(得分:0)
如果整个代码块在一个循环中,那么它因为循环本身而失败。假设您有4个要插入的视频...因为您加载YT API javascript库的代码在循环内部,您最终将加载4次。并且因为你的回调函数在循环内部,你最终会定义它4次,每次都会覆盖先前的定义以及覆盖引用视频的对象。由于您的回调函数引用了视频,因此只有列表中的最后一个视频才会有一个持续存在的回调函数,因此我的猜测就是插入的视频。
tl; dr - 问题不在API中,而是在编程结构中。
也许你可以重新组织你的代码:
// DON'T START YOUR LOOP YET
<script>
var tag = document.createElement('script');
tag.src = "https://www.youtube.com/player_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
function onYouTubePlayerAPIReady() {
// START YOUR LOOP HERE
<?php
if($slide['kind'] == 'youtube'){
?>
var player<?php echo $count+1 ?>;
var video = '<?php echo $slide['message']; ?>';
player<?php echo $count+1 ?> = new YT.Player('ytplayer<?php echo $count+1; ?>', {
height: '365',
width: '648',
videoId: video,
playerVars: {
'rel': 0,
'enablejsapi': 1,
}
}); // CODE CONTINUES ON FROM HERE, EVENTUALLY ENDING THE LOOP, PUTTING IN THE HTML
等。请注意,我发现我的代码无效;我只是指出你的循环应该在onYouTubePlayerAPIReady中,你需要为每个视频创建一个单独的播放器对象。 (好吧,你不需要......你可以采用一种不同的策略来利用API的其他方面......但鉴于你拥有的东西,这是最简单的。)作为上述评论者指出,如果你创建了一个jsfiddle与您的代码,人们可以更轻松地帮助您微调它以实现这种方法。
答案 1 :(得分:0)
使用jlmcdonald给我的一个提示,我让它工作,看到下面的小提琴的链接 http://jsfiddle.net/AaGvt/
<script>
var tag = document.createElement('script');
tag.src = "//www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);
var player;
function onYouTubeIframeAPIReady() {
player = new YT.Player('player', {
height: '250',
width: '500',
videoId: 'u1zgFlCw8Aw',
events: {}
});
player = new YT.Player('player2', {
height: '250',
width: '500',
videoId: 'u1zgFlCw8Aw',
events: {}
});
player = new YT.Player('player3', {
height: '250',
width: '500',
videoId: 'u1zgFlCw8Aw',
events: {}
});
}
</script>
<div id="player"></div>
<div id="player2"></div>
<div id="player3"></div>
通过SQL请求和循环,您可以构建div
<div id="player"></div>
etc...
并创建所需的javascript
player = new YT.Player('player', {
height: '250',
width: '500',
videoId: 'u1zgFlCw8Aw',
events: {}
});
etc...