是否可以在ios7中自动播放或触发HTML5音频中的播放()状态?

时间:2013-11-01 00:04:43

标签: jquery html5 ios7

我使用以下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);



});    

1 个答案:

答案 0 :(得分:6)

不,它不适用于ios ......

取自:Safari Developer Library文档:
(感谢ndm)[源链接在他的评论中]

  

在iOS上的Safari(适用于所有设备,包括iPad)中,用户可能位于蜂窝网络上并按数据单元收费,因此会禁用预加载和自动播放。在用户启动数据之前不会加载任何数据。这意味着JavaScript play()和load()方法在用户启动回放之前也处于非活动状态,除非用户操作触发play()或load()方法。换句话说,用户启动的播放按钮有效,但onLoad =“play()”事件不起作用。