使用HTML5在iPad上自动播放音频文件

我试图让一个音频文件在iPad上的Safari中自动播放。 如果我在我的Mac上使用Safari访问该页面,那很好。 在iPad上,自动播放不起作用。


更新:这是一个黑客攻击,它不再适用于IOS 4.X及以上版本。 这一个在IOS 3.2.X上工作。

这不是真的。 Apple不想在iPad上自动播放视频和音频,因为您可以在移动网络上使用大量流量。 我不会使用自动播放在线内容。 对于离线HTML网站这是一个很棒的功能,那就是我用它的。

这是一个“JavaScript假点击”解决方案:http://www.roblaplaca.com/examples/html5AutoPlay/

从网站复制和粘贴代码:

<script type="text/javascript"> 
        function fakeClick(fn) {
            var $a = $('<a href="#" id="fakeClick"></a>');
                $a.bind("click", function(e) {
                    e.preventDefault();
                    fn();
                });

            $("body").append($a);

            var evt, 
                el = $("#fakeClick").get(0);

            if (document.createEvent) {
                evt = document.createEvent("MouseEvents");
                if (evt.initMouseEvent) {
                    evt.initMouseEvent("click", true, true, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
                    el.dispatchEvent(evt);
                }
            }

            $(el).remove();
        }

        $(function() {
            var video = $("#someVideo").get(0);

            fakeClick(function() {
                video.play();
            });
        });

        </script> 

这不是我的来源。 我前段时间发现了这个问题,并使用IOS 3.2.X在IPad和iPhone上测试了代码。


我还想强调,你做不到的原因是苹果做出的一个商业决定,而不是技术决定。 换句话说,Apple没有合理的技术理由来禁用iPod Touch上的网络应用程序的声音。 这仅仅是一个WiFi设备,而不是可能导致昂贵的带宽费用的电话,所以该论点对于该设备没有价值。 他们可能会说他们正在帮助进行WiFi网络管理,但我的WiFi网络带宽问题是我关心的问题,而不是Apple的问题。

另外,如果他们真正关心的是防止不必要的过度带宽消耗,他们会提供一个设置,允许用户选择加入Web应用程序的声音。 此外,他们会采取其他措施来限制网站消耗等效带宽。 但是没有这样的限制。 一个网站可以一遍又一遍地在后台下载大文件,苹果公司可以不关心这一点。 最后,我相信这些声音可以下载,所以没有任何带宽被实际保存! 如果没有用户交互,苹果不允许他们自动播放,使他们无法用于游戏,这当然是他们的真正意图。

苹果阻止了声音,因为他们开始注意到HTML5应用程序可以像原生应用程序一样有能力,如果不是更多的话。 如果你想在Web应用程序中播放声音,你需要游说苹果停止像微软那样的反竞争。 没有技术问题可以在这里解决。


出于各种商业原因,苹果恼火地拒绝在他们的iOS设备上使用许多HTML5网络标准。 最终,您无法在触摸事件之前预加载或自动播放声音文件,它一次只播放一个声音,并且不支持Ogg / Vorbis。 不过,我确实找到了一个漂亮的解决方法,让您对音频有更多的控制权。

<audio id="soundHandle" style="display:none;"></audio>

<script type="text/javascript">

var soundHandle = document.getElementById('soundHandle');

$(document).ready(function() {
    addEventListener('touchstart', function (e) {
        soundHandle.src = 'audio.mp3';
        soundHandle.loop = true;
        soundHandle.play();
        soundHandle.pause();
    });
});

</script>

基本上,你开始在首次触摸事件中播放音频文件,然后立即暂停。 现在,您可以在整个Javascript中使用soundHandle.play()和soundHandle.pause()命令并控制没有触摸事件的音频。 如果你可以完美的时间,声音结束后立即进入暂停。 然后再次播放时,它会循环回到开头。 这不会解决苹果在这里所造成的所有混乱,但这是一个解决方案。

链接地址: http://www.djcxy.com/p/71131.html

上一篇: Autoplay audio files on an iPad with HTML5

下一篇: asp.net