我使用以下jquery将HTML5音频元素添加到其他基本HTML页面。我希望音频标签能够自动开始播放(用户将导航到此特定页面/区域,以明确听取脱口秀节目的音频流)。
它加载并在桌面Web浏览器和测试Android设备上开始播放,但在ios7(测试设备是iphone 4s),我可以看到触发测试警报,但音频元素的播放状态似乎不完全可以访问/响应。
是否有人熟悉如何成功设置自动播放或以某种方式“触发”ios7中音频标签的播放状态?
如果没有,我想它会让我有机会让用户(移动设备用户专门)确认/确认他们理解带宽影响等等,并让他们的手动“点击”作为触发开始播放。
我以为我会看到有没有人在ios7中熟悉一种方法 - 我不确定它是否也是以前版本的iOS下的一个问题。
感谢。
继承我的代码片段:
$(document).ready(function() {
$('body').append('<audio src="EXTERNAL_AUDIO_STREAM_URL_HERE" autoload="false" autoplay="false" id="audiostream" controls/>');
// THIS WORKS FINE WHEN THIS ELEMENT IS CLICKED IN IOS7 MANUALLY, THE AUDIO STARTS FINE...
$('#startbutton').click(function(){
$('#audiostream')[0].load();
$('#audiostream')[0].play();
alert('loaded, fine...');
});
// THIS DOES NOT START AUDIO IN IOS7 AUTOMATICALLY...
setTimeout(function() {
$('#startbutton').trigger('click');
}, 2000);
});
答案 0 :(得分:6)
不,它不适用于ios ......
取自:Safari Developer Library文档:
(感谢ndm)[源链接在他的评论中]
在iOS上的Safari(适用于所有设备,包括iPad)中,用户可能位于蜂窝网络上并按数据单元收费,因此会禁用预加载和自动播放。在用户启动数据之前不会加载任何数据。这意味着JavaScript play()和load()方法在用户启动回放之前也处于非活动状态,除非用户操作触发play()或load()方法。换句话说,用户启动的播放按钮有效,但onLoad =“play()”事件不起作用。