我正在尝试创建一个HTML5音频播放列表,以便在每个主要浏览器中都能正常工作:Chrome、Safari、Firefox、IE9+。然而,我无法找到一种跨浏览器兼容的方式来更改源代码。
更新 例如,更改
JS:
<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()
。对此有任何想法的人吗?
if(!!audioPlayer.canPlayType('audio/mp3') === true)
语句,如果它是假的,你可以添加一个else { audioType = '.ogg' }
,然后将 audioType 变量更改为 .ogg。 - eivers88<script type="text/javascript"></script>
标签中? - eivers88