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

时间:2012-08-28 01:22:02

标签: javascript internet-explorer html5-video setattribute

我已经完全阅读了关于在IE9中通过javascript动态更改视频标记源的每个stackoverflow线程,包括有用但未商定的帖子herehere,但确实感觉还有其他解决方案。这是我正在尝试做的最基本的例子:

    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");

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

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

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

(或者,如果你能指出'缺少'溢出线程的方向,测试IE中是否存在属性,然后以某种方式通过javascript设置src,那也将受到赞赏。)

1 个答案:

答案 0 :(得分:27)

好消息,我找到了一个真正的解决方案,通过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>

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