video标签在IE 9中无效

我正在构建的video标签在IE9中不起作用。 它在Firefox和Chrome中运行正常。

我将mime添加到IIS 7.5服务器Extension = .mp4 Mime Type = video / mp4

我使用此代码使用jQuery创建元素

function fsuccLoadVideo(data) { var arr = GetNormalizeMetadataClean(data); var vid = $(' 

它以这种方式在浏览器上呈现:

  

(无法使格式化正确以显示完整渲染,但这是关键线

如果您将其安装为第三方应用程序,ie9仅支持webm。

问题似乎是IE9不允许动态添加源标签 。 出于某种原因,$(’video’)。append(…)将不适用于此元素。

你必须做这样的事情:

 $('video').append(''); 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年8月~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

很久以前写了这个评论,并且仍然得到了它/ upvotes for it – 从那以后我改变了主意:如果你开始使用javascript,只需使用原生的$('video')[0].canPlayType("video/mp4") (或”video / webm“;或者没有jQuery)来检查哪个源适合并使用$('video')[0].src()函数进行设置。 唯一的缺点是你需要一个Android 2.1和2.2的canPlayType() ,它没有随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' : ''; } } 

因此,如果使用JavaScript,我建议不要使用子节点。

我建议不要将编解码器添加到源type属性,最好让浏览器自行决定,除非你100%确定用于编码video文件的编解码器。