function AudioHelper() { function isSupportOgg() { var tmp = document.createElement('audio'); return tmp.canPlayType && "" != tmp.canPlayType('audio/ogg;codecs="vorbis"'); } function soundHandle() { var tempS, ifValid; do { tempS = soundIdArr.pop(); ifValid = typeof (tempS) !== "undefined"; if (ifValid) { var dom = document.getElementById(tempS); if (dom !== null) dom.load(); } } while (ifValid); window.removeEventListener(eventName, soundHandle, true); } function createAudio(soundfile) { var divBom = document.createElement('div'); divBom.innerHTML = ''; return divBom.childNodes[0]; } var userAgent = navigator.userAgent.toLowerCase(); //取得浏览器的userAgent字符串 var isIE = userAgent.indexOf("compatible") > -1 && userAgent.indexOf("msie") > -1; //判断是否IE<11浏览器 var ieVersion = 0; if (isIE) { try { if (document.documentMode) ieVersion = document.documentMode; else ieVersion = userAgent.match(/msie ([\d.]+)/)[1]; } catch (e) { ieVersion = 0; } } var isSwf = isIE && ieVersion < 9; var isOgg = !isSwf && isSupportOgg(); var soundfileHash = new Object(); var soundIdArr = []; var eventName = /i(phone|p(o|a)d)/.test(userAgent) ? "touchstart" : "touchend"; this.init = function (id, soundfile) { var ifChange = soundfileHash[id] !== soundfile; if (ifChange) soundfileHash[id] = soundfile; if (typeof (soundfile) !== "string") return false; var dom = document.getElementById(id); var hasDom = dom != null; if (isSwf) { if (hasDom) return true; dom = document.createElement("div"); } else { if (hasDom) { if (!ifChange) return true; document.body.removeChild(dom); } soundIdArr.push(id); dom = createAudio(soundfile); if ('on' + eventName in document.documentElement) { window.removeEventListener(eventName, soundHandle, true); window.addEventListener(eventName, soundHandle, true); } dom.style.display = "none"; } dom.id = id; document.body.appendChild(dom); return true; } this.play = function (id) { var soundfile = soundfileHash[id]; if (typeof (soundfile) !== "string") return false; var dom = document.getElementById(id); if (dom) { if (isSwf) { soundfile = soundfile + ".swf"; if (ieVersion < 6) dom.innerHTML = ""; else dom.innerHTML = ""; } else dom.play(); } } } var audioHelper = new AudioHelper(); /* 例子 初始化一次或者修改文件:audioHelper.init("playSound", "/files/audio/nba/sound"); 播放:audioHelper.play("playSound") */