javascript - 嵌入 YouTube 视频 : Custom Javascript Actions on Thumbnail

标签 javascript html youtube

我正在使用自定义 JavaScript 缩略图嵌入 YouTube 视频。如果操作正确,页面应加载自定义缩略图,单击时应加载 iframe youtube 视频并自动开始播放。

我正在使用本教程作为引用: A More Efficient Method for Embedding YouTube Videos

我是一名初级 Web 开发人员,我得到了一些有问题的结果。我已经设法加载自定义缩略图,并在用户单击缩略图时自动播放相应的视频,但页面加载时会在视频缩略图的左上角显示一个可见的小文件缩略图。

有人能发现 html 或 java 的错误吗?我认为我的 css 部分是正确的,但我也会添加它以供引用。

HTML

<div class="youtube-container">
        <div class="youtube-player" id="yo" data-id="9jkx03pnMtg">
            <div> 
                <img class="youtube-thumb" src="img/yo_thumbnail.png">
            <div class="play-button"></div>
            </div>
        </div>
    </div>

脚本

<script>
(function() {
    var v = document.getElementsByClassName("youtube-player");
    for (var n = 0; n < v.length; n++) {
        var p = document.createElement("div");
        p.innerHTML = labnolThumb(v[n].dataset.id);
        p.onclick = labnolIframe;
        v[n].appendChild(p);
    }
})();

function labnolThumb(id) {
    return '<img class="youtube-thumb" src="//i.ytimg.com/vi/' + id + '/hqdefault.jpg"><div class="play-button"></div>';
}

function labnolIframe() {
    var iframe = document.createElement("iframe");
    iframe.setAttribute("src", "http://www.youtube.com/embed/" + this.parentNode.dataset.id + "?autoplay=1");
    iframe.setAttribute("frameborder", "0");
    iframe.setAttribute("id", "youtube-iframe");
    this.parentNode.replaceChild(iframe, this);
}
</script>

CSS

.youtube-container { display: block; margin: 20px auto; width: 100%; max-width: 600px; }
.youtube-player { display: block; width: 100%; /* assuming that the video has a 16:9 ratio */ padding-bottom: 56.25%; overflow: hidden; position: relative; width: 100%; height: 100%; cursor: hand; cursor: pointer; display: block; }
img.youtube-thumb { bottom: 0; display: block; left: 0; margin: auto; max-width: 100%; width: 100%; position: absolute; right: 0; top: 0; height: auto }
div.play-button { height: 72px; width: 72px; left: 50%; top: 50%; margin-left: -36px; margin-top: -36px; position: absolute; background: url("http://i.imgur.com/TxzC70f.png") no-repeat; }
#youtube-iframe { width: 100%; height: 100%; position: absolute; top: 0; left: 0; }

最佳答案

您的 html 中不需要有 img 标记。这就是您在视频缩略图一 Angular 看到的内容。

<img class="youtube-thumb" src="img/yo_thumbnail.png">

它是由 JavaScript 自动添加的:

function labnolThumb(id) {
    return '<img class="youtube-thumb" src="//i.ytimg.com/vi/' + id + '/hqdefault.jpg"><div class="play-button"></div>';
}

关于javascript - 嵌入 YouTube 视频 : Custom Javascript Actions on Thumbnail,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34895903/

相关文章:

javascript - 什么时候需要在 javascript 函数中传递对象作为参数?

html - 如何使水平无序列表中的列表项居中?

jquery - 如何获取 ID 从同一字符串开始的所有输入字段的 Sum()

javascript - 自定义 YouTube 控件、标题和整个 iFrame

javascript - 使用 turf.js 在 mapbox 上显示多个大圆圈

javascript - 如何找到当前元素的下一个元素?

sharepoint - 如何在JavaScript中的Sharepoint 2013库中检索嵌入式视频代码

youtube - 使用 channel ID 查找 youtube channel 名称

javascript - 防止空输入传递空字符串javascript

html - CSS垂直白线问题Chrome和Opera