ede*_*son 1 video jquery html5 internet-explorer-9
我正在构建的视频标签在IE9中不起作用.它在Firefox和Chrome中运行正常.
我将mime添加到IIS 7.5服务器Extension = .mp4 Mime Type = video/mp4
我使用此代码使用jQuery创建元素
function fsuccLoadVideo(data) {
var arr = GetNormalizeMetadataClean(data);
var vid = $('<video width=400 height=300 controls poster=' + arr[0]["CntrTestVideoImage"] + '/>');
var loc = window.location.href;
var idx = loc.lastIndexOf('/') + 1;
var mp4loc = loc.substr(0, idx)+ arr[0]["CntrTestVideoMp4Src"];
loc = loc.substr(0, idx)+ arr[0]["CntrTestVideoOggSrc"];
if ((arr[0]["CntrTestVideoMp4Src"] != undefined) && (arr[0]["CntrTestVideoMp4Src"].length > 0)) {
$("<source />", { src: loc, type: 'video/webm; codecs="vp8, vorbis"' }).appendTo(vid);
$("<source />", { src: mp4loc, type: 'video/mp4; codecs="avc1.42E01E, mp4a.40.2"' }).appendTo(vid);
$("<source />", { src: loc, type: 'video/ogg; codecs="theora, vorbis"' }).appendTo(vid);
$(vid).append("Your browser does not support the video tag");
$("#videosection").append(vid);
}
}
Run Code Online (Sandbox Code Playgroud)
它以这种方式在浏览器上呈现:
<source
src="http://10.1.16.102:90/Intranet/safety/contractortest/video/cntrTest1.ogg"
type="video/webm; codecs="vp8, vorbis"">
Run Code Online (Sandbox Code Playgroud)
(无法使格式正确以显示完整渲染,但这是关键线
问题似乎是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');
}
Run Code Online (Sandbox Code Playgroud)
在iOS 4,Android 3.1和3.2以及当前版本的FF,Chrome,IE9,Opera和Safari(Win)中测试
.
更新2012年8月~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
很久以前写了这个评论,并且仍然得到了它/ upvotes for it - 从那以后我改变了主意:如果你开始使用javascript,只需使用native $('video')[0].canPlayType("video/mp4")
(或"video/webm";或w/o jQuery)检查哪个源适合并使用该$('video')[0].src(<URL>)
功能进行设置.唯一的缺点是你需要一个Android 2.1和2.2的polyfill,它没有附带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' : '';
}
}
Run Code Online (Sandbox Code Playgroud)
因此,<source>
如果使用JavaScript ,我建议不要使用子节点.
归档时间: |
|
查看次数: |
3891 次 |
最近记录: |