gpt4 book ai didi

javascript - 在 IIFE 中包装 Javascript 函数不适用于视频播放器

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

我有一些创建视频播放器的代码。在 IIFE 中包装脚本时,视频播放器部分不起作用,但其余代码有效。吊上也没有任何错误。

fiddle " https://jsfiddle.net/wdbnmhrm/

JS

(function() {

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var player;
var video_div = document.getElementsByClassName("easy-yt-bkg")[0];
var video_url = video_div.getAttribute("data-youtube-id");

function onYouTubeIframeAPIReady() {
player = new YT.Player('easy-youtube_background', {
height: '100%',
width: '100%',
playerVars: {
autoplay: 1,
loop: 1,
controls: 0,
showinfo: 0,
autohide: 1,
modestbranding: 1,
vq: 'hd1080'},
videoId: video_url,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}

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

function onPlayerStateChange(event) {
if (event.data === YT.PlayerState.ENDED) {
player.playVideo();
}
}

var height_adjustment = video_div.offsetHeight
video_div.posiiton = "relative";
video_div.zIndex = -10;
var content_div = document.getElementsByClassName("content")[0]
content_div.zIndex = 1;
content_div.position = "relative";
var height_change = "-" + height_adjustment + "px"
console.log(height_change);
content_div.style.top = height_change;
})();

html

 <div id="easy-youtube_background" class="easy-yt-bkg" data-youtube-id="ZZ9_RJ2EPo0"></div>
<div class="content">Some cool content goes here</div>

CSS

#easy-youtube_background {
height: 400px;
width: 600px;
}

.content {
color: red;
position: relative;
}

最佳答案

问题是您永远不会调用 onYouTubeIframeAPIReady() 函数。

我对内容进行了一些重新排序以使其更具可读性,并删除了您不需要重新创建此问题的内容。

(function() {
var player;
var video_div = document.getElementsByClassName("easy-yt-bkg")[0];
var video_url = video_div.getAttribute("data-youtube-id");

function onYouTubeIframeAPIReady() {
player = new YT.Player('easy-youtube_background', {
height: '100%',
width: '100%',
playerVars: {
autoplay: 1,
loop: 1,
controls: 0,
showinfo: 0,
autohide: 1,
modestbranding: 1,
vq: 'hd1080'},
videoId: video_url,
events: {
'onReady': onPlayerReady,
'onStateChange': onPlayerStateChange
}
});
}

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

function onPlayerStateChange(event) {
if (event.data === YT.PlayerState.ENDED) {
player.playVideo();
}
}

var ytScript = document.createElement('script');
ytScript.src = "https://www.youtube.com/iframe_api";
ytScript.onload = function() {
YT.ready(onYouTubeIframeAPIReady);
};
var scriptContainer = document.getElementsByTagName('body')[0];
scriptContainer.appendChild(ytScript);
}());

关于javascript - 在 IIFE 中包装 Javascript 函数不适用于视频播放器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37747456/

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