使用YouTube Player API将视频添加到页面

雷吉

我想使用Player API在单击按钮时加载YouTube视频。目的是用户可以输入视频网址,单击按钮,然后在下面加载视频(我将下面的表单输入排除在外,以使其更加简单)。

我尝试过使用location.reload();来强制重新加载页面,并检查了一些其他类似的问题,因为它们不使用API​​(添加功能后需要在以后使用),因此这些问题并不完全有用。

来自文档的此示例工作正常:

<!DOCTYPE html>
<html>
<body>

<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player"></div>

<script>
    // 2. This code loads the IFrame Player API code asynchronously.
    var tag = document.createElement('script');

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

    // 3. This function creates an <iframe> (and YouTube player)
    //    after the API code downloads.
    var player;
    function onYouTubeIframeAPIReady() {
        player = new YT.Player('player', {
            height: '390',
            width: '640',
            videoId: 'M7lc1UVf-VE',
            events: {
                'onReady': onPlayerReady,
                'onStateChange': onPlayerStateChange
            }
        });
    }

    // 4. The API will call this function when the video player is ready.
    function onPlayerReady(event) {
        event.target.playVideo();
    }

    // 5. The API calls this function when the player's state changes.
    //    The function indicates that when playing a video (state=1),
    //    the player should play for six seconds and then stop.
    var done = false;
    function onPlayerStateChange(event) {
        if (event.data == YT.PlayerState.PLAYING && !done) {
            setTimeout(stopVideo, 6000);
            done = true;
        }
    }
    function stopVideo() {
        player.stopVideo();
    }
</script>
</body>
</html>

我想让类似这样的东西(非常相似的版本)工作。我不知道为什么现在不行。

<!DOCTYPE html>
<html>
<body>

<input type="submit" value="Submit" id="submit">

<!-- 1. The <iframe> (and video player) will replace this <div> tag. -->
<div id="player"></div>

<script>

    document.getElementById("submit").addEventListener("click", function() {

        location.reload();

        // 2. This code loads the IFrame Player API code asynchronously.
        var tag = document.createElement('script');

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

        // 3. This function creates an <iframe> (and YouTube player)
        //    after the API code downloads.
        var player;

        function onYouTubeIframeAPIReady() {
            player = new YT.Player('player', {
                height: '390',
                width: '640',
                videoId: 'M7lc1UVf-VE',
                events: {
                    'onReady': onPlayerReady,
                    'onStateChange': onPlayerStateChange
                }
            });
        }

        // 4. The API will call this function when the video player is ready.
        function onPlayerReady(event) {
            event.target.playVideo();
        }

        // 5. The API calls this function when the player's state changes.
        //    The function indicates that when playing a video (state=1),
        //    the player should play for six seconds and then stop.
        var done = false;

        function onPlayerStateChange(event) {
            if (event.data == YT.PlayerState.PLAYING && !done) {
                setTimeout(stopVideo, 6000);
                done = true;
            }
        }

        function stopVideo() {
            player.stopVideo();
        }

    });

</script>
</body>
</html>
准瓦尔

你有两个问题。

1)onYouTubeIframeAPIReady永远不会被调用,因为它是在youtube API加载后定义的。您可以通过添加看到此内容console.log

2)重新加载页面时,页面将重新加载;即您以前的变量和视频,一切都消失了。

以下是在点击按钮时加载并播放youtube视频的最小示例:

<input type="submit" value="Submit" id="submit">

<div id="player"></div>

<script src="https://www.youtube.com/iframe_api"></script>
<script>
    document.getElementById('submit').addEventListener('click', () => {
        new YT.Player('player', {
            height: '390',
            width: '640',
            videoId: 'M7lc1UVf-VE',
            events: {
                onReady: e => e.target.playVideo()
            }
        });
    });
</script>

请注意,YouTube代码示例要么试图向后兼容,要么就没有进行严格的更新。他们不遵循现代风格(例如,他们使用var代替let==代替==="代替',等等。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Youtube Player API抛出404

来自分类Dev

在iframe中加载Youtube Player API

来自分类Dev

使用GPUImage将图像添加到视频

来自分类Dev

如何使用YouTube Android Player API播放YouTube实时流?

来自分类Dev

使用官方YouTube Android Player API的ListView中的Youtube缩略图闪烁

来自分类Dev

使用API Player的YouTube隐藏字幕

来自分类Dev

Android:片段中无法使用YouTube Player API

来自分类Dev

为什么使用YouTube JavaScript Player API将onClick下一个视频功能的质量降至默认值?

来自分类Dev

从YouTube Player API覆盖ActionP的YouTubePlayerSupportFragment

来自分类Dev

使用youtube-ios-player-helper播放视频

来自分类Dev

YouTube Player API全屏活动

来自分类Dev

使用Youtube API将视频添加到播放列表

来自分类Dev

使用Youtube Android Player API的浮动视频播放器

来自分类Dev

通过API(Python)将多个视频添加到youtube播放列表

来自分类Dev

如何使用YouTube IFrame Player API收听时间更改事件?

来自分类Dev

使用FFMPEG将音轨添加到视频

来自分类Dev

YouTube JavaScript Player API已弃用

来自分类Dev

使用FFmpeg将音频添加到视频

来自分类Dev

在iframe中加载Youtube Player API

来自分类Dev

使用GPUImage将图像添加到视频

来自分类Dev

Youtube Player API样本

来自分类Dev

YouTube将http重定向到https并使用Flash Player代替HTML5

来自分类Dev

Youtube Player API抛出404

来自分类Dev

Android:无法在片段中使用YouTube Player API

来自分类Dev

使用Youtube Player IFrame API将视频添加到播放列表

来自分类Dev

youtube Player API-未创建视频的播放列表

来自分类Dev

YouTube Player API全屏活动

来自分类Dev

使用JavaScript将视频动态添加到html页面

来自分类Dev

在 Youtube Intent 或 Youtube Player 中获取选定的视频

Related 相关文章

  1. 1

    Youtube Player API抛出404

  2. 2

    在iframe中加载Youtube Player API

  3. 3

    使用GPUImage将图像添加到视频

  4. 4

    如何使用YouTube Android Player API播放YouTube实时流?

  5. 5

    使用官方YouTube Android Player API的ListView中的Youtube缩略图闪烁

  6. 6

    使用API Player的YouTube隐藏字幕

  7. 7

    Android:片段中无法使用YouTube Player API

  8. 8

    为什么使用YouTube JavaScript Player API将onClick下一个视频功能的质量降至默认值?

  9. 9

    从YouTube Player API覆盖ActionP的YouTubePlayerSupportFragment

  10. 10

    使用youtube-ios-player-helper播放视频

  11. 11

    YouTube Player API全屏活动

  12. 12

    使用Youtube API将视频添加到播放列表

  13. 13

    使用Youtube Android Player API的浮动视频播放器

  14. 14

    通过API(Python)将多个视频添加到youtube播放列表

  15. 15

    如何使用YouTube IFrame Player API收听时间更改事件?

  16. 16

    使用FFMPEG将音轨添加到视频

  17. 17

    YouTube JavaScript Player API已弃用

  18. 18

    使用FFmpeg将音频添加到视频

  19. 19

    在iframe中加载Youtube Player API

  20. 20

    使用GPUImage将图像添加到视频

  21. 21

    Youtube Player API样本

  22. 22

    YouTube将http重定向到https并使用Flash Player代替HTML5

  23. 23

    Youtube Player API抛出404

  24. 24

    Android:无法在片段中使用YouTube Player API

  25. 25

    使用Youtube Player IFrame API将视频添加到播放列表

  26. 26

    youtube Player API-未创建视频的播放列表

  27. 27

    YouTube Player API全屏活动

  28. 28

    使用JavaScript将视频动态添加到html页面

  29. 29

    在 Youtube Intent 或 Youtube Player 中获取选定的视频

热门标签

归档