如何在iOS中自动播放媒体> = 4.2.1 Mobile Safari?
除了用户执行的点击事件的处理程序之外,我似乎无法在iOS 4.2.1上的Mobile Safari上播放audio媒体。 即使如此,如果player.play()
以任何asynchronous方式( ajax, setTimeout
等)被调用,它不起作用。
我试着在player.load()
之前调用player.play()
。 我试过在一个处理程序调用player.play()
的dom元素上触发一个click事件。 我试过使用audio和video标签。
所有在iOS 4.2.1之前工作的漏洞似乎都被closures了。 有任何想法吗?
从iOS 4.2.x开始,如果没有用户input事件(如touchstart),则不会启动媒体下载。
所以答案是否定的 ,没有办法通过JavaScript或其他方式自动播放媒体。
有一种方法可以在4.2.1上自动播放video/audio文件。 创build一个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);
正如其他人在这里所说的,根据苹果文档,MobileSafari不支持video标签中的自动播放属性。 但是,在iOS 6中,它工作。 这似乎是苹果在iOS 6.0.1中修复的错误(大概是在iOS 6.1中)。
如果您偶然发现在iOS 6.0中工作,请不要依赖iOS 6中的自动播放function。
-Michael
作为一种解决方法,我尝试将load()/ play()代码绑定到单击事件,然后以编程方式触发单击事件。 这种方法在桌面Safari,但不是移动Safari。
这工作在iPad上,直到昨晚4.2升级:
$(function() { var Beep = document.createElement('audio'); Beep.setAttribute('src', 'beep-23.mp3'); Beep.load(); Beep.play(); }
我的Beep.play();
仍然适用于单击事件,但最初的Beep.play()
停止工作…
这个怎么样?
使用Sound Manager 2创buildaudio精灵,从第一个用户交互中预加载并caching,然后在需要时播放。
这会工作吗?
支持自动播放(在我的testing中)使用耳机插孔的iPhone 5(iOS 6)。
在运行IOS 6的第三代iPad上,HTML5标签的自动播放function突然开始运作! (我已经安装了IOS6几个星期了,我很确定我马上testing了这个function,但是今天晚上才注意到它正在工作。)我不记得有没有看到苹果的这个消息,尽pipe我看到该移动Safari已被授予支持通过file upload的能力
<form><input type="file" .../></form>
– 我需要的另一个function,但苹果已经扣留。
请尝试这个代码,它是同时工作的版本,您需要在页面中dynamic添加audio控制。 这是工作。
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(); } });