2012-08-28 51 views
11

我已經從字面上閱讀了關於通過IE9中的javascript動態更改視頻標籤源的每個stackoverflow主題,包括有用但未達成一致的帖子herehere,感覺就像有另一種解決方案。這裏是我想要做的很簡單的例子:setAttribute和video.src用於更改視頻標籤源在IE9中不工作

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徹底討厭,特別是因爲在src是最肯定被changeed用一個簡單的被檢查後video.getAttribute,儘管IE實際上並沒有做任何事情來切換視頻。

是的,有人聲稱,在IE瀏覽器中,您必須將src列在HTML中,以便在頁面加載後對其進行更改,但是我確定在stackoverflow上找到了一個通過簡單的JavaScript提出解決方案的線程。 (令我感到失望的是,我再也找不到這樣做的線程......而且我到處搜索,相信我)。如上所述,如果任何人都可以提供一個解決方案,而不需要將所有視頻src放在HTML中,而是使用JavaScript動態設置/創建src,如上所示,我將非常感激。 (或者,如果你可以指向'缺少'溢出線程的方向,測試該屬性是否存在於IE中,然後以某種方式通過javascript設置src,這也將被讚賞)。

回答

26

好消息,我發現了一個真正的解決方案,通過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 ... 如果您有任何問題,請讓我知道。

+1

我在另一個html5視頻轉移。瀏覽器兼容性在這裏很難。時間在堆積,讓IE9做什麼和鉻可以。你的帖子釘了它。完美,謝謝。順便說一句,很好的網站:) –

+0

我打破了它。花了幾分鐘的焦慮,但發現..訂單或元素! ..是至關重要的。 .mp4必須在.ogg類型之前。我已經切換,所以ff不會在控制檯中說「不支持的類型」。但是,ff可以工作,但其他人不會! –

+8

IE8?這怎麼可能? ie8不支持視頻標籤。 – franzlorenzon