gpt4 book ai didi

javascript - Youtube 视频因暂停事件而停止

转载 作者:行者123 更新时间:2023-11-30 15:56:24 25 4
gpt4 key购买 nike

我的网站页面上有几个带有电视 channel 的 youtube iframe。

<div>
<iframe id="ytplayer" src="https://www.youtube.com/embed/ntBxGznOML0?rel=0&enablejsapi=1&autoplay=0&controls=1&showinfo=0&loop=1&iv_load_policy=3&modestbranding=0" frameborder="0" allowfullscreen></iframe>
</div>
<div>
<iframe id="ytplayer" src="https://www.youtube.com/embed/zl4aeAfhdro?rel=0&enablejsapi=1&autoplay=0&controls=1&showinfo=0&loop=1&iv_load_policy=3&modestbranding=0" frameborder="0" allowfullscreen></iframe>
</div>
<div>
<iframe id="ytplayer" src="https://www.youtube.com/embed/URD4UWm-edg?rel=0&enablejsapi=1&autoplay=0&controls=1&showinfo=0&loop=1&iv_load_policy=3&modestbranding=0" frameborder="0" allowfullscreen></iframe>
</div>
<div>
<iframe id="ytplayer" src="https://www.youtube.com/embed/75j9l956bVs?rel=0&enablejsapi=1&autoplay=0&controls=1&showinfo=0&loop=1&iv_load_policy=3&modestbranding=0" frameborder="0" allowfullscreen></iframe>
</div>

我正在尝试使用一个 java 脚本来静音播放视频并在暂停事件时停止播放,但它对我不起作用。脚本如下

var player;

function onYouTubeIframeAPIReady() {
player = new YT.Player('ytplayer', {
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange

}
});
}
function onPlayerStateChange(event){
player.stopVideo(0);

}


}
function onPlayerReady(event) {
player.mute();
player.playVideo();
}

我需要在暂停事件时完全停止视频,因为它是直播电视 channel ,所以如果我现在按暂停,10 分钟后我会得到一个记录,但不是直播。我怎样才能让我的脚本工作?

最佳答案

更新

OP有多个播放器,使用纯JavaScript,变化如下:

  1. 多个玩家共享同一个 id,现在每个玩家都有一个唯一的 id。
  2. 添加了 <button class='stop' data-id='yt*'>STOP</button>对于每个玩家。
    • 每个按钮都有一个 data-id .它的值对应于它的玩家 ID。
  3. 包装<section id='videoChannels'></section>周围的一切。
    • 添加了 eventListener#videoChannels所以当一个按钮被点击时#videoChannels被称为 target.currentTarget可以与 event.target 进行比较确定被点击的按钮(即 event.target )。
    • capture eventPhase之后事件链到达event.target (被点击的按钮)和函数 ytCommand()在与按钮对应的播放器上调用(参见步骤 2。)

工作演示

PLUNKER


停止 YouTube 播放器

  1. 使用 contentWindow 访问 iframe方法
  2. 接下来可以使用 postMessage API 通过 iframe 进行跨域通信。 .
  3. 下一条命令来自 YouTube iFrame API

相关代码

$('#stop').on('click', function() {

$('#ytPlayer')[0].contentWindow.postMessage('{"event":"command","func":"' + 'stopVideo' + '","args":""}', '*');
});

工作演示

FIDDLE

片段

<!doctype html>
<html>

<head>
<meta charset="utf-8">
<title>Stop YTPlayer</title>
</head>

<body>
<section id="videoChannels">
<div>
<iframe id="yt0" class="player" src="https://www.youtube.com/embed/8IzxdjVr5ZI?enablejsapi=1" frameborder="0" allowfullscreen></iframe>
<button class='stop' data-id='yt0'>STOP</button>
</div>

<div>
<iframe id="yt1" class="player" src="https://www.youtube.com/embed/AhenpCh6BO4?enablejsapi=1" frameborder="0" allowfullscreen></iframe>
<button class='stop' data-id='yt1'>STOP</button>
</div>

<div>
<iframe id="yt2" class="player" src="https://www.youtube.com/embed/HrmF-mPLybw?enablejsapi=1" frameborder="0" allowfullscreen></iframe>
<button class='stop' data-id='yt2'>STOP</button>
</div>

<div>
<iframe id="yt3" class="player" src="https://www.youtube.com/embed/6KouSwLP_2o?enablejsapi=1" frameborder="0" allowfullscreen></iframe>
<button class='stop' data-id='yt3'>STOP</button>
</div>
</section>
<script>
var vidCh = document.getElementById('videoChannels');

vidCh.addEventListener('click', ytCommand, false);

function ytCommand(event) {
if (event.target != event.currentTarget) {
var btn = event.target.getAttribute('data-id');
var ytp = document.getElementById(btn);
ytp.contentWindow.postMessage('{"event":"command","func":"' + 'stopVideo' + '","args":""}', '*');
}
}
</script>
</body>

</html>

关于javascript - Youtube 视频因暂停事件而停止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38461993/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com