网络上介绍JS切换背景音乐的方法大多不可行,最后在一个韩国网站上找到解决办法,原来切换音乐时需要一个延时。
musicStatus = false; // 背景音乐,播放特定曲目,空曲目,暂停音乐 function playmusicfile(musicfile) { var objMusic = document.getElementById("bgmusic"); if (!objMusic) return; if (musicfile == "") // 这几行处理,播放空文件时延迟一段时间才停止音乐的问题 { if (typeof objMusic.pause == 'function') { objMusic.pause(); // 遇到空文件,先关闭之前的音乐 } } var parEle = objMusic.parentNode; parEle.removeChild(objMusic); var newEle = document.createElement("embed"); newEle.setAttribute("id","bgmusic"); newEle.src=musicfile; newEle.setAttribute("hidden","true"); newEle.setAttribute("autostart","false"); parEle.appendChild(newEle); if (musicStatus == "pause") { setTimeout(musicStop, 300); // 注意这里需要一个延时等待背景音乐文件载入内存 } else if (musicStatus == "play") { setTimeout(musicPlay, 300); } // objMusic = newEle; } function musicStop() { if (bgmusic && (typeof bgmusic.stop == 'function' || typeof bgmusic.stop == 'unknown')) // 有时候bgmusi.stop是unknown类型 bgmusic.stop(); } function musicPlay() { if (bgmusic && typeof bgmusic.play == 'function' || typeof bgmusic.play == 'unknown')) // 有时候bgmusi.play是unknown类型 bgmusic.play(); }
|