IOS 10 手机 audio.play() 工作不稳定
IOS 10 mobile audio.play() work unstable
这是我的代码:
$(document).on('click', 'div.play',function () {
play = $(this);
var stop = $('.stop');
contentId = play.attr('id');
nexttrack = nexttrackPlay(play);
if(!play.parent().hasClass('stop')) {
if(song ==undefined){
initAudio(play);
}
else
{
song.src = play.attr('audiourl');
song.load();
}
playerInit(play);
stop.each(function () {
$(this).removeClass('stop');
});
playAudio();
}
else{
if(song.paused){
playAudio();
}
else{
stopAudio();
}
}
});
function initAudio(elem) {
var url = elem.attr('audiourl');
song = document.getElementsByTagName('audio')[0];
console.log(song);
song.src = url;
song.preload = 'metadata';
song.load();
song.addEventListener('play', function () {
$('.play-play').addClass('stop');
play.parent().addClass('stop');
play.removeClass('pause');
$('.button-play').addClass('stop');
song.removeEventListener('play',function(){ });
},false);
song.addEventListener('pause', function () {
play.addClass('pause');
$('.play-play').removeClass('stop');
$('.button-play').removeClass('stop');
song.removeEventListener('play',function(){ });
},false);
}
function playAudio() {
song.load();
song.play();
}
function stopAudio() {
song.pause();
}
在 Android 和桌面上运行完美,但在 IOS 上第一次点击不起作用,当点击另一首歌曲然后再次开始播放时。
我找到了问题和解决方案)
所有东西都在 headers 中,我用 Content-type:application/octet-stream 发送了 headers,这是 IOS 的问题,然后我将其更改为 audio/mpeg ] 和音频开始加载。
这是我的代码:
$(document).on('click', 'div.play',function () {
play = $(this);
var stop = $('.stop');
contentId = play.attr('id');
nexttrack = nexttrackPlay(play);
if(!play.parent().hasClass('stop')) {
if(song ==undefined){
initAudio(play);
}
else
{
song.src = play.attr('audiourl');
song.load();
}
playerInit(play);
stop.each(function () {
$(this).removeClass('stop');
});
playAudio();
}
else{
if(song.paused){
playAudio();
}
else{
stopAudio();
}
}
});
function initAudio(elem) {
var url = elem.attr('audiourl');
song = document.getElementsByTagName('audio')[0];
console.log(song);
song.src = url;
song.preload = 'metadata';
song.load();
song.addEventListener('play', function () {
$('.play-play').addClass('stop');
play.parent().addClass('stop');
play.removeClass('pause');
$('.button-play').addClass('stop');
song.removeEventListener('play',function(){ });
},false);
song.addEventListener('pause', function () {
play.addClass('pause');
$('.play-play').removeClass('stop');
$('.button-play').removeClass('stop');
song.removeEventListener('play',function(){ });
},false);
}
function playAudio() {
song.load();
song.play();
}
function stopAudio() {
song.pause();
}
在 Android 和桌面上运行完美,但在 IOS 上第一次点击不起作用,当点击另一首歌曲然后再次开始播放时。
我找到了问题和解决方案) 所有东西都在 headers 中,我用 Content-type:application/octet-stream 发送了 headers,这是 IOS 的问题,然后我将其更改为 audio/mpeg ] 和音频开始加载。