更改 与HTML5音频作品在Chrome,但不是Safari浏览器(Changing

2019-06-25 17:22发布

我试图让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()版。 有没有人有什么想法?

Answer 1:

这是一个工作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();
    }
})


Answer 2:

出于某种原因,Safari浏览器不能使用<source>标签歌曲,但Chrome浏览器之间交换。 只是改变什么被加载到src的属性<audio>标签适用于Chrome和Safari浏览器,但再有就是OGG与MP3的问题。

我猜来解决这个问题OGG与MP3问题的一种方法是使用Modernizr的做功能检测加载OGG MIME类型Firefox和Chrome浏览器/ Safari浏览器的MP3。 这里有一个参考: 检测与Modernizr的HTML5的音频支持 。



文章来源: Changing with HTML5 Audio works in Chrome but not Safari