首页 > 解决方案 > 更改选择列表中的选项时如何停止所有 YouTube 视频

问题描述

我在隐藏的 div 中有几个 YouTube 播放器,它们根据 WP 模板中的选择显示/隐藏。我遇到的问题是,如果您正在播放视频,请使用选择列表更改频道,该视频在隐藏后继续播放。在加载新内容时,您仍然可以听到原始视频的音频。全局变量“players”出现错误->“players.pauseVideo 不是函数”。在代码中,我创建了一个视频播放器数组并尝试创建一个全局停止函数,无论我使用什么 var、players、players_list 等,我都会遇到同样的错误。

var players = new Array();
var players_list = ["ytpl-player1", "ytpl-player2", "ytpl-player3"];

function stopGlobal() {
    players_list.pauseVideo();
}

标签: javascriptjquerywordpressyoutube-api

解决方案


有几个错误。只看其中之一。

var players = new Array();
var players_list = ["ytpl-player1", "ytpl-player2", "ytpl-player3"];

for (item in players_list) {
    console.log('Trying to set "'+ players_list[item] + '" as index of array.');
    players[players_list[item]] = 'whatever';
}

console.log('Result:');
console.log(players);

使固定:

var players = {
  "ytpl-player1": null,
  "ytpl-player2": null,
  "ytpl-player3": null,
};

Object.keys(players).forEach(function(key) {
  players[key] = 'new YT.Player(key, ...';
});

console.log('Result:');
console.log(players);

然后你可以像上面一样再次迭代并在每个值上调用 pauseVideo() 。


推荐阅读