如何在iOS> = 4.2.1 Mobile Safari中自动播放媒体?

时间:2010-11-23 19:24:32

标签: iphone ipad html5 ios mobile-safari

在除了用户执行的点击事件处理程序之外的任何情况下,我似乎无法在iOS 4.2.1上的Mobile Safari中播放音频媒体。即使这样,如果以任何异步方式(player.play()等)调用ajax, setTimeout,它也不起作用。

我尝试在player.load()之前调用player.play()。我尝试在dom元素上触发click事件,其处理程序调用{​​{1}}。我尝试过使用音频和视频标签。

iOS 4.2.1之前的所有漏洞似乎都已关闭。有什么想法吗?

9 个答案:

答案 0 :(得分:16)

从iOS 4.2.x开始,如果没有像touchstart这样的用户输入事件,则不会启动媒体下载。

所以答案是没有,没有方法可以通过JavaScript或其他方式自动播放媒体。

答案 1 :(得分:14)

有一种方法可以在4.2.1上自动播放视频/音频文件。创建一个iframe并将其源设置为媒体文件的URL,并将iframe附加到正文。这将是自动播放。

var ifr=document.createElement("iframe");
ifr.setAttribute('src', "http://mysite.com/myvideo.mp4");
ifr.setAttribute('width', '1px');
ifr.setAttribute('height', '1px');
ifr.setAttribute('scrolling', 'no');
ifr.style.border="0px";
document.body.appendChild(ifr);

答案 2 :(得分:6)

正如其他人在此处所述并根据Apple文档,MobileSafari不支持视频标记中的自动播放属性。但是,在iOS 6中它可以工作。这似乎是Apple在iOS 6.0.1中修复的错误(可能是在iOS 6.1中)。

如果碰巧在iOS 6.0中遇到它,请不要依赖iOS 6中的自动播放工作。

- 迈克尔

答案 3 :(得分:4)

作为一种解决方法,我尝试将load()/ play()代码绑定到click事件,然后以编程方式触发click事件。这种方法适用于Desktop Safari,但不适用于Mobile Safari。

答案 4 :(得分:1)

这在iPad上工作直到昨晚4.2升级:

$(function() {
    var Beep = document.createElement('audio');
    Beep.setAttribute('src', 'beep-23.mp3');
    Beep.load();
    Beep.play();
}

我的Beep.play();仍可用于点击事件,但最初的Beep.play()已停止工作...

答案 5 :(得分:1)

这个怎么样?

使用Sound Manager 2,preload&创建音频精灵。从第一次用户交互中缓存它,然后在需要时播放。

那会有用吗?

答案 6 :(得分:0)

使用耳机插孔,使用iPhone 5(iOS 6)支持(在我的测试中)自动播放。

答案 7 :(得分:0)

在运行IOS 6的第三代iPad上,HTML5标签的自动播放突然开始工作! (我已经安装了IOS 6几周了,而且我很确定我立刻测试了这个功能,但只是注意到它今晚正在工作。)我不记得看到苹果公司发现这一点,尽管我确实看到了移动版Safari已被授予通过

支持文件上传的功能
<form><input type="file" .../></form>

- 我需要的另一个功能,但苹果已经隐瞒了。

答案 8 :(得分:-1)

请尝试此代码它正在使用这两个版本,您需要在页面中动态添加音频控件。它正在发挥作用。

var isiPad = false;
if (navigator.userAgent.match(/iPad/i) || navigator.userAgent.match(/iPhone/i) || navigator.userAgent.match(/Android/i) || navigator.userAgent.match(/webOS/i)) { 
    isiPad = true; 
}
$(function() { 
    if (isiPad) { 
        var audioElement2 = document.createElement('audio'); 
        audioElement2.setAttribute('src', 'img/bgsound.mp3'); 
        audioElement2.controls = true; 
        audioElement2.loop = true; 
        audioElement2.load();
        audioElement2.play();
    }
});
相关问题