gpt4 book ai didi

javascript - 如何使用 Youtube JS api 控制多个 Youtube 视频的播放?

转载 作者:行者123 更新时间:2023-11-29 16:25:34 25 4
gpt4 key购买 nike

问题是这样的:我的 slider 中有多个 YouTube 视频,并且我希望在单击控制 slider 的链接时停止播放视频。当您看不到视频时却一直播放视频,这真的很烦人。

我使用了这段代码:

<div id="ytapiplayer2">
You need Flash player 8+ and JavaScript enabled to view this video.
</div>
<script type="text/javascript">
function onYouTubePlayerReady(playerId) {ytplayer2 = document.getElementById("myvideo");}
var params = { allowScriptAccess: "always" };var atts = { id: "myvideo" };
swfobject.embedSWF("http://www.youtube.com/v/hCarSDT7cSQ?enablejsapi=1&version=3&playerapiid=myvideo","ytapiplayer2", "425", "270", "8", null, null, params, atts);
function play() {if (ytplayer2) {ytplayer2.playVideo();}}
function pause() {if (ytplayer2) {ytplayer2.pauseVideo();}}
</script>

这基本上是直接来自 Google 的 Youtube js api 的东西。 1它非常适合每页一个视频。

我的问题是我想在某些页面的同一个 slider 中包含多个视频。视频包含在 div 内,并按照上面在每个相应 div 中显示的方式进行调用。

但是 - 单击 slider 的导航链接时,视频现在不会停止播放。 :(

我尝试在每次调用脚本时将变量和 ID 名称更改为唯一。我什至将函数名称从函数 onYouTubePlayerReady 更改为 onYouTubePlayerReady2 ...但没有任何效果。

我被难住了。哈尔普?


编辑以显示更详细的代码设置:

<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.6.0/jquery.min.js" type="text/javascript"></script><!--Uses Google API library-->
<script src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js" type="text/javascript"></script><!--Uses Google API library-->
</head>
<body>
<div id="bodyContent">
<div id="leftCol">
Content
</div><!-- #leftCol -->
<div id="middleCol">
<ul id="subNav">
<li class="category">Mini Header</li>
<li><a href="#link1">Link 1</a></li>
<li><a href="#link2">Link 2</a></li>
<li><a href="#link3">Link 3</a></li>
</ul><!--subNav-->
</div><!-- #middleCol -->
<div id="rightCol" class="slider">
<div class="scroll">
<div class="scrollContainer">
<div id="link1" class="panel">
<div id="ytapiplayer1">
You need Flash player 8+ and JavaScript enabled to view this video.
</div>
<script type="text/javascript">
function onYouTubePlayerReady(playerId) {ytplayer1 = document.getElementById("myVideo1");}
var params = { allowScriptAccess: "always" };var atts = { id: "myVideo1" };
swfobject.embedSWF("http://www.youtube.com/v/67aIIRv-dYU?enablejsapi=1&version=3&playerapiid=ytplayer1","ytapiplayer1", "425", "347", "8", null, null, params, atts);
function play() {if (ytplayer1) {ytplayer1.playVideo();}}
function pause() {if (ytplayer1) {ytplayer1.pauseVideo();}}
</script>
</div><!-- #link1 -->
<div id="link2" class="panel">
<div id="ytapiplayer2">
You need Flash player 8+ and JavaScript enabled to view this video.
</div>
<script type="text/javascript">
function onYouTubePlayerReady(playerId) {ytplayer2 = document.getElementById("myVideo2");}
var params = { allowScriptAccess: "always" };var atts = { id: "myVideo2" };
swfobject.embedSWF("http://www.youtube.com/v/67aIIRv-dYU?enablejsapi=1&version=3&playerapiid=ytplayer1","ytapiplayer2", "425", "347", "8", null, null, params, atts);
function play() {if (ytplayer2) {ytplayer2.playVideo();}}
function pause() {if (ytplayer2) {ytplayer2.pauseVideo();}}
</script>
</div><!-- #link2 -->
<div>Video 3 set up is same as above...</div>
</div>
</div><!-- .scroll -->
</div><!-- #rightCol -->
</div><!-- #bodyContent -->
</body>

最佳答案

错误的方法。当您可以使用一个播放器完成任务时,为什么还要使用两个或更多 YouTube 播放器,特别是当您使用 YouTube JS API 时。

相关代码:

<div id="ytapiplayer">
You need Flash player 8+ and JavaScript enabled to view this video.
</div>
<a href="#" onclick="load('hCarSDT7cSQ'); return false;">Video 1</a>
<a href="#" onclick="load('67aIIRv-dYU'); return false;">Video 2</a>

<script type="text/javascript">
function load(id) {
if (ytplayer) {
ytplayer.loadVideoById(id);
}
}
</script>

Demo for solution 1

或者,您可以创建多个玩家,并找出某种方法将页面上有多少玩家存储在变量中。我认为存储玩家的id就足够了。不要将 id 与 (i) 您分配给 div 的 id (ii) 作为 playerapiid 传递的 id 混淆。

swfobject.embedSWF() 将用 objectembed 标记替换 div,该标记会分配一个您传递的 id到这个方法的最后一个参数。这是您稍后可以用来引用玩家的 ID。

Demo for solution 2

关于javascript - 如何使用 Youtube JS api 控制多个 Youtube 视频的播放?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6406482/

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