Safari音频标签不起作用

我使用这个简单的代码处理HTML5音频标签:

HTML

 

JS

 $('#audioFrenata').on('ended', function() { manageImageObjectsLevel(); }).get(0).play(); 

使用Chrome,这可以正常工作,Windows上的Safari 5.1.7和iPad 3上的Safari我收到:

 'undefined' is not a function (evaluating '$('#audioFrenata').on('ended', function() { manageImageObjectsLevel(); }).get(0).play()') 

任何人都知道为什么?

我遇到了完全相同的问题,我发现它是由于Safari中的以下限制:

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

参考: http : //developer.apple.com/library/safari/#documentation/AudioVideo/Conceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html

解决问题的一种方法是默认静音,当用户“取消静音”时,您可以创建HTML5 Audio对象的实例并将其存储在“静态”/“全局”变量中,并将其用于进一步回放。

– 更新

这是一篇博客文章,描述了该问题以及如何处理它: http : //blog.gopherwoodstudios.com/2012/07/enabling-html5-audio-playback-on-ios.html

这是一个类似的stackoverflow问题,讨论相同的事情: 使用HTML5在iPad上自动播放音频文件

以下是我编写的用于处理HTML5中音频播放的JavaScript“模块”:

 NS.modules.html5.audio = (function () { var _snd = false; function playAudio(src) { if (!_snd) _snd = new Audio(); else $(_snd).empty(); for (var i = 0; i < src.length; i++) { var source = document.createElement('source'); source.type = src[i].type; source.src = src[i].src; _snd.appendChild(source); } _snd.load(); // Needed on safari / idevice _snd.play(); }; var playAudio = function () { var src = [ { src: "/path/to/audio.wav", type: "audio/vnd.wave" }, { src: "/path/to/audio.ogg", type: "application/ogg; codecs=vorbis" }, { src: "/path/to/audio.mp3", type: "audio/mpeg" } ]; playAudio(src); }; return { playAudio: playAudio, // more play functions here }; })(); 

在我的情况下,问题是由HTML格式引起的,我切换到以下格式,它工作。 希望这有助于某人:

  

注意上面布局中缺少元素。

检查您提到的浏览器是否支持您想要的HTML5function。 你可以在这里查看 。 希望这会帮助你。

ID似乎是错误的。

 $('#audioLevel').on('ended', function() { manageImageObjectsLevel(); }).get(0).play(); 

它假设是

 $('#audioFrenata').on('ended', function() { manageImageObjectsLevel(); }).get(0).play(); 

使用以下HTML

  

参考现场演示