1

我使用以下 jquery 将 HTML5 音频元素添加到其他基本 HTML 页面。我希望音频标签自动开始播放(用户将导航到此特定页面/区域,以明确收听脱口秀的音频流)。

它在桌面网络浏览器和测试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);



});    
4

1 回答 1

6

不,它不可能在 ios 上...

取自:Safari 开发者库文档:(
感谢 ndm)[源链接在他的评论中]

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

于 2013-11-01T02:12:23.373 回答