我试图让HTML5的音频播放列表,将在每一个主要的浏览器中运行:Chrome浏览器,Safari浏览器,火狐,IE9 +。 但是,我想不出如何更改源的跨浏览器兼容的方式。
更新的例子,改变<source>
标签的src
在Chrome,但不Safari的作品。 虽然@ eivers88的下方采用溶液canPlayType
作品似乎更容易我只是改变<source>
标签的src
秒。 任何人都可以向我解释为什么我的代码下方工作在Chrome,但不是Safari浏览器?
JS:
var audioPlayer=document.getElementById('audioPlayer');
var mp4Source=$('source#mp4');
var oggSource=$('source#ogg');
$('button').click(function(){
audioPlayer.pause();
mp4Source.attr('src', 'newFile.mp4');
oggSource.attr('src', 'newFile.ogg');
audioPlayer.load();
audioPlayer.play();
});
HTML:
<button type="button">Next song</button>
<audio id="audioPlayer">
<source id="mp4" src="firstFile.mp4" type="audio/mp4"/>
<source id="ogg" src="firstFile.ogg" type="audio/ogg" />
</audio>
检查HTML单击按钮,后<source src=""/>
确实在Safari变化,它只是HTTP请求不发,所以他们的文件没有得到load()
编辑和play()
版。 有没有人有什么想法?
这是一个工作exapmle 。 这是从你有什么,但希望这可以帮助一点点不同。
HTML:
<button type="button">Next song</button>
使用Javascript / jQuery的:
var songs = [
'1976', 'Ballad of Gloria Featherbottom', 'Black Powder'
]
var track = 0;
var audioType = '.mp3'
var audioPlayer = document.createElement('audio');
$(window).load(function() {
if(!!audioPlayer.canPlayType('audio/ogg') === true){
audioType = '.ogg' //For firefox and others who do not support .mp3
}
audioPlayer.setAttribute('src', 'music/' + songs[track] + audioType);
audioPlayer.setAttribute('controls', 'controls');
audioPlayer.setAttribute('id', 'audioPlayer');
$('body').append(audioPlayer);
audioPlayer.load();
audioPlayer.play();
});
$('button').on('click', function(){
audioPlayer.pause();
if(track < songs.length - 1){
track++;
audioPlayer.setAttribute('src', 'music/' + songs[track] + audioType);
audioPlayer.load();
audioPlayer.play();
}
else {
track = 0;
audioPlayer.setAttribute('src', 'music/' + songs[track] + audioType);
audioPlayer.load();
audioPlayer.play();
}
})
出于某种原因,Safari浏览器不能使用<source>
标签歌曲,但Chrome浏览器之间交换。 只是改变什么被加载到src
的属性<audio>
标签适用于Chrome和Safari浏览器,但再有就是OGG与MP3的问题。
我猜来解决这个问题OGG与MP3问题的一种方法是使用Modernizr的做功能检测加载OGG MIME类型Firefox和Chrome浏览器/ Safari浏览器的MP3。 这里有一个参考: 检测与Modernizr的HTML5的音频支持 。