Javascript Youtube API包含多个事件的视频
亲爱的社区强> 我想在我的网站上显示多个视频。默认情况下应禁用扬声器(我使用mute()-函数) 当用户滚动并且视频进入浏览器视口时,视频应该开始自动播放 我用一个视频制作了这部电影,效果很好。但不能在一个站点上使用多个视频 请帮助我在代码中遗漏了什么 此部分:Javascript Youtube API包含多个事件的视频,javascript,api,video,youtube,Javascript,Api,Video,Youtube,亲爱的社区 我想在我的网站上显示多个视频。默认情况下应禁用扬声器(我使用mute()-函数) 当用户滚动并且视频进入浏览器视口时,视频应该开始自动播放 我用一个视频制作了这部电影,效果很好。但不能在一个站点上使用多个视频 请帮助我在代码中遗漏了什么 此部分: <div class="video-container"> <div data-id="olBOo_S5AHY"></div> </div> <div class="video-con
<div class="video-container">
<div data-id="olBOo_S5AHY"></div>
</div>
<div class="video-container">
<div data-id="3IXKIVZ9T-U"></div>
</div>
<div class="video-container">
<div data-id="LAQDcnwwspQ"></div>
</div>
这是js部分:
function onYouTubePlayerAPIReady() {
var players = document.querySelectorAll('.video-container div')
for (var i = 0; i < players.length; i++) {
new YT.Player(players[i], {
width: 600,
height: 400,
videoId: players[i].dataset.id,
events: {
onReady: initialize
}
});
}
}
function initialize(){
players[i].mute(); // I know that players[i] is wrong..
var waypoints = jQuery('.video-container').waypoint(function() {
if( players[i]) { // I know that players[i] is wrong..
var fn = function(){
players[i].playVideo(); // I know that players[i] is wrong..
}
setTimeout(fn, 1000);
}
}, {
offset: '50%'
})
}
函数onYouTubePlayerAPIReady(){
var players=document.querySelectorAll('.video container div')
对于(变量i=0;iplayers
变量是您查询的div的节点列表,不包含可寻址的YouTube元素。
您必须将这些youtube播放器对象分配到某个位置以对其进行寻址。(或者可能有其他魔法来找到它们?)
请看一下我的垃圾箱:
这是一个工作设置-当你向下滚动时,你将触发其他玩家。
您可以看看我是如何创建所需对象的,等等
// get .player nodes
var playerDivs = document.querySelectorAll(".player");
// nodelist to array to use forEach();
var playerDivsArr = [].slice.call(playerDivs);
var players = new Array(playerDivsArr.length);
var waypoints = new Array(playerDivsArr.length);
// when youtube stuff is ready
function onYouTubeIframeAPIReady() {
// create yt players
playerDivsArr.forEach(function(e, i) { // forEach ...
players[i] = new YT.Player(e.id, {
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
events: { /* no events set */ }
})
})
// create waypoints
$(".player").each(function(i, e) {
waypoints[i] = new Waypoint({
element: e,
handler: function() {
players[i].playVideo();
}
})
});
}
编辑添加:
呵呵,
不用担心,
initialize函数需要使用许多youtube播放器对象在数组中迭代,您只需要与initialize函数中的一个player
变量对话(当您遵循我的代码时,该变量甚至可能没有设置?)。
看看上面写着“创建yt播放器”的地方。你会看到数组中的每个插槽都塞满了一个播放器对象。然后你必须再次与他们交谈,告诉他们.mute()
。
在forEach
循环中,数组中的当前对象被传递给yt
变量
function initialize() {
players.forEach(function(yt, i) {
yt.mute();
});
}
另一个垃圾箱:
干杯
您的players
变量是您查询的div的节点列表,不包含可寻址的YouTube元素。
您必须将这些youtube播放器对象分配到某个位置以对其进行寻址。(或者可能有其他魔法来找到它们?)
请看一下我的垃圾箱:
这是一个工作设置-当你向下滚动时,你将触发其他玩家。
您可以看看我是如何创建所需对象的,等等
// get .player nodes
var playerDivs = document.querySelectorAll(".player");
// nodelist to array to use forEach();
var playerDivsArr = [].slice.call(playerDivs);
var players = new Array(playerDivsArr.length);
var waypoints = new Array(playerDivsArr.length);
// when youtube stuff is ready
function onYouTubeIframeAPIReady() {
// create yt players
playerDivsArr.forEach(function(e, i) { // forEach ...
players[i] = new YT.Player(e.id, {
height: '390',
width: '640',
videoId: 'M7lc1UVf-VE',
events: { /* no events set */ }
})
})
// create waypoints
$(".player").each(function(i, e) {
waypoints[i] = new Waypoint({
element: e,
handler: function() {
players[i].playVideo();
}
})
});
}
编辑添加:
呵呵,
不用担心,
initialize函数需要使用许多youtube播放器对象在数组中迭代,您只需要与initialize函数中的一个player
变量对话(当您遵循我的代码时,该变量甚至可能没有设置?)。
看看上面写着“创建yt播放器”的地方。你会看到数组中的每个插槽都塞满了一个播放器对象。然后你必须再次与他们交谈,告诉他们.mute()
。
在forEach
循环中,数组中的当前对象被传递给yt
变量
function initialize() {
players.forEach(function(yt, i) {
yt.mute();
});
}
另一个垃圾箱:
干杯!哦,我的天哪,我能嫁给你吗?)你真了不起。我现在明白了全部结构。非常感谢你!!!真漂亮,这帮了我很大的忙!哦,我的上帝,我能嫁给你吗你太棒了。我现在明白了全部结构。非常感谢你!!!真漂亮,这帮了我很大的忙!