解决 IE 浏览器无法播放的音频格式
function packageImage (url) {
var content = '';
// 先判断是否为音频,然后在判断是 IE 或者 Google 浏览器播放
if ( isAudioFile(url)) {
//判断 IE 或者 Google 浏览器播放音频
content = getAudioDom(url);
}
return content;
}
// 判断是否为音频文件。
//我这里是传入的整个 url 链接,我要在链接中截取到文件的后缀名,然后判断是否为音频文件
function isAudioFile(url) {
var flag = false;
var audioType = ["avi","wmv","mpg","mpeg","mov","rm","ram","swf","flv","mp4","mp3","wma","rm","rmvb","flv","mpg","ogg","wav"]; //音频后缀,要小写
var str = url.match(/@(\S*)&/)[1]; //文件名
var lowerCase = str.toLowerCase();
//这部分文件后缀名是根据我自己当前业务传入做的判断,结合自己的情况判断.
var index = lowerCase.lastIndexOf(".");
var suffix =lowerCase.substring(index+1,lowerCase.length); //后缀名
if (audioType.indexOf(suffix) !== -1) {
console.log("当前文件为音频文件,文件名为="+str);
flag = true;
}
return flag;
}
//判断 IE 或者 Google 浏览器播放音频
function getAudioDom(src) {
var userAgent = navigator.userAgent; //取得浏览器的userAgent字符串
if (
(userAgent.indexOf("Trident") > -1 && userAgent.indexOf("rv:11.0")) ||
(userAgent.indexOf("compatible") > -1 && userAgent.indexOf("MSIE") > -1)
) {
//如果为ie浏览器则显示embed
return (
'<embed class="embed" type="audio/wav" src="' +
src +
'" menu="true" loop="false" align="center" preload="auto" autostart="false">\ </embed>'
);
} else {
return (
'<audio controls="controls" src="' +
src +
'" type="audio/wav" id="record-audio" preload></audio>'
);
}
}