setAttribute和video.src用于更改在IE9中不起作用的视频标记源

mkr*_*a11 11 javascript internet-explorer setattribute html5-video

我确实读过每个stackoverflow线程关于在IE9中通过javascript动态更改视频标记源,包括有用但未商定的帖子在这里这里,但确实感觉有另一个解决方案.这是我正在尝试做的非常基本的例子:

    var video = document.getElementById('video');
    //now, use either of the lines of code below to change source dynamically

    video.src = "nameOfVideo";
    //or use...
    video.setAttribute("src", "nameOfVideo");
Run Code Online (Sandbox Code Playgroud)

这两行代码都被Internet Explorer彻底憎恨,特别是因为在使用简单的video.getAttribute进行检查后,src肯定会被更改,即使IE实际上没有做任何事情来切换视频.

是的,有人声称,使用IE,你必须在HTML中列出src,以便在页面加载后更改它们,但我确实在stackoverflow上找到了一个通过简单的JavaScript提出解决方案的线程.(令我失望的是,我再也找不到这样做的话......我到处搜寻,相信我).

尽管如此,如果有人能提供解决方案而不使用将所有视频src放在HTML中,而是使用JavaScript动态设置/创建src,如上所示,我将非常感激.

(或者,如果你可以指向我'缺少'溢出线程的方向,测试该属性是否存在于IE中,然后以某种方式通过javascript设置src,这也将被赞赏).

mkr*_*a11 28

好消息,我找到了一个真正的解决方案,通过JavaScript切换/更改HTML5视频标签中的视频,而不使用我试图解释的讨厌的黑客!这简直令人难以置信,它只是对IE进行了大量的实验.以下是在IE中最简单的代码:

<html>
  <body>
    <video id='videoPlayer' width="320" height="240" controls="controls">
       <source id='mp4Source' src="movie.mp4" type="video/mp4" />
       <source id='oggSource' src="movie.ogg" type="video/ogg" />
    </video>

<!-- You MUST give your sources tags individual ID's for the solution to work. -->

    <script>
      var player = document.getElementById('videoPlayer');

      var mp4Vid = document.getElementById('mp4Source');

      player.pause();

      // Now simply set the 'src' property of the mp4Vid variable!!!!

      mp4Vid.src = "/pathTo/newVideo.mp4";

      player.load();
      player.play();
    </script>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

你有它.令人难以置信的简单 - 在IE8和IE9中测试和工作......如果您有任何问题,请告诉我.

  • IE8?怎么可能?Ie8不支持视频标签. (8认同)