Кажется, проблема в том, что IE9 не позволяет динамически добавлять теги источника .По какой-то причине $ ('video'). Append (...) не будет работать для этого элемента.
вам нужно сделать что-то вроде этого:
$('video').append('<source src="' + pathMp4 + '" type="video/mp4"><source src="' + pathWebm + '" type="video/webm">');
if(!$('video').children('source').length) { // set src&type attribute for ie9/android3.1 because it does not add the source child-elements
$('video').attr('src', pathMp4 ).attr('type','video/mp4');
}
протестировано в iOS 4, Android 3.1 и 3.2 и текущие версии FF, Chrome, IE9, Opera и Safari (Win)
.
ОБНОВЛЕНИЕ Авг 2012 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
написал этот комментарий давно и до сих пор получает за него отрицательные отзывы - с тех пор я передумал: еслидля начала вы используете javascript, просто используйте нативный $('video')[0].canPlayType("video/mp4")
(или «video / webm» или без jQuery), чтобы проверить, какой источник подходит, и установить его с помощью функции $('video')[0].src(<URL>)
.Единственным недостатком является то, что вам нужен полифилл для Android 2.1 и 2.2, который не поставлялся с canPlayType()
:
var ua = window.navigator.userAgent.toLowerCase();
if(ua.match(/android 2\.[12]/) !== null)
HTMLMediaElement.prototype.canPlayType = function(type) {
return (type.match(/video\/(mp4|m4v)/gi) !== null) ? 'maybe' : '';
}
}
Таким образом, я бы рекомендовал не использовать <source>
дочерних узлов, если используется JavaScriptв любом случае.