代码之家  ›  专栏  ›  技术社区  ›  sodiumnitrate

更改SRC后不加载视频

  •  2
  • sodiumnitrate  · 技术社区  · 7 年前

    我有一个带有(图像)按钮和视频元素的页面。每当我点击按钮时,我都想加载并开始播放随机视频。然而,即使 src 正确设置为随机文件,视频播放器不会更改。有什么问题?代码如下:

    <!DOCTYPE html>
    <html lang="en">
        <head>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1.0">
            <meta http-equiv="X-UA-Compatible" content="ie=edge">
            <title>Test</title>
        </head>
        <body>
            <div id="all">
                <div id="video-container">
                    <video width="500" controls>
                        <source id="vid" src="videos/1.mp4" type="video/mp4">
                        Your browser does not support HTML5 video.
                    </video>
                </div>
                <div id="buton">
                    <img src="img/buton.png" onclick="swapVid()">
                </div>
            </div>
            <script type="text/javascript">
                function swapVid() {
                    console.log("videos/"+Math.round(Math.random() * 3).toString() + ".mp4")
                    document.getElementById("vid").setAttribute("src", "videos/"+Math.round(Math.random() * 3).toString() + ".mp4")
                    console.log(document.getElementById("vid").getAttribute("src"))
                }
            </script>
        </body>
    </html>
    
    2 回复  |  直到 7 年前
        1
  •  2
  •   Dimitri Podborski    7 年前

    您也可以在不替换现有视频元素的情况下执行此操作,如下所示。为此 id="vid" 应该是的属性 <video> 元素。我想这就是你想做的:

    <div id="all">
        <div id="video-container">
            <video width="500" controls id="vid" src="videos/1.mp4">
                Your browser does not support HTML5 video.
            </video>
        </div>
            <div id="buton">
                  <img src="img/buton.png" onclick="swapVid()">
            </div>
        </div>
    <script type="text/javascript">
        function swapVid() {
            var nextVideo = "videos/" + Math.round(Math.random() * 3).toString() + ".mp4";
            document.getElementById("vid").setAttribute("src", nextVideo);
            console.log(document.getElementById("vid").getAttribute("src"));
    }
    </script>
    
        2
  •  3
  •   Dacre Denny    7 年前

    也许你可以用一个全新的视频元素替换现有的视频来解决这个问题:

    function swapVid() {
    
        var video = document.getElementById('vid');
        if(video) { video.remove(); }
    
        video = document.createElement('video');
        video.setAttribute('id', 'vid'); 
        video.width = 500;
        video.src = "videos/"+ parseInt(Math.random() * 3) + ".mp4";
    }
    

    采用这种方法可以确保从先前的视频播放到下一个随机选择的视频没有“过时”状态(即播放状态、光标位置等)。