在iPad上播放音频
我正在为有客户端聊天的网站工作,但是,我们遇到了iPad(iOS 5)中音频的问题。在iPad上播放音频
目标实际上是支持IE7的iPad首选。
我已经试过这些方法:
HTML5
<audio id="notification" preload="auto">
<source src="audio/notification.ogg" type="audio/ogg" />
<source src="audio/notification.mp3" type="audio/mpeg" />
</audio>
随着一些JavaScript
var el = document.getElementById('notification');
el.play();
我偷了一些JavaScript函数某处这实际上在一个功能中是两种不同的方法。请注意脚本在一个子目录中,所以路径是正确的。
function notify() {
var url = '../audio/notification.mp3';
var a = document.createElement('audio');
if(!!(a.canPlayType && a.canPlayType('audio/mpeg').replace(/no/, ''))) {
var sound = new Audio(url);
sound.load();
sound.play();
} else {
$('#notification').remove();
var sound = $('<embed id="notification" type="audio/mpeg" src="'+url+'" loop="false" hidden="true" autostart="true" />');
$(body).append(sound);
}
}
这两种方法似乎都不起作用。难道我做错了什么?
那么,答案是显而易见的。
很多时间支出做研究后等,我发现Safari浏览器的官方文档中an article说:
在Safari浏览器在iOS(所有设备,包括iPad的),其中用户可在蜂窝网络上并按每个数据单元收费,预先加载和自动播放被禁用。直到用户启动它才会加载数据。这意味着,除非用户操作触发play()或load()方法,否则JavaScript play()和load()方法在用户启动播放之前也处于非活动状态。换句话说,用户启动的播放按钮可以工作,但onLoad =“play()”事件不会。
因此,基本上,如果用户一开始没有触发,就无法启动声音。作为解决方案,我创建了一个默认关闭的静音按钮,因此您必须单击播放通知声音的按钮。之后,我可以使用Javascript在没有用户交互的情况下播放声音。
谢谢Safari浏览器为这个伟大的未来。非常感谢。
尝试将MP3作为第一个来源而不是第二个来源。 iPad曾经有一个问题,无论它是什么(它现在可能已经被修复 - 但它是值得一试的),它始终扮演着第一个来源。
也尝试将type
更改为audio/mp3
。
不幸的是,两者都没有工作。尽管感谢您的回答。 –
奇数。你是否证实它可以在桌面浏览器上运行?所以你可以确保音频文件的路径是正确的? –
我可以肯定,它确实在桌面上工作。另外,如果iPad实际上是这样的声音,哈哈! –
如果没有用户点击之前启动它,Apple iPad不允许播放声音。
解决方案:添加播放/暂停按钮。
App.toggle_audio = function(elem) {
var icon = elem.find("i");
var playing = _.include(icon.attr('class').split(" "), "icon-pause")
if (playing) {
elem.html("<i class='icon-play'></i> " + App.translate_play_audio);
App.play_audio_toggle = false;
} else {
App.audio_file.load();
elem.html("<i class='icon-pause'></i> " + App.translate_pause_audio);
App.play_audio_toggle = true;
}
}
一旦用户点击按钮,一旦加载了音频。然后你可以通过Javascript播放它。
if (App.play_audio_toggle) {
App.audio_file.play();
}
我偶然发现了这个问题,并找到了解决这个问题的方法。然后决定发布我用来帮助他人的代码。 – Hendrik
与iOS 6的一个onload在发布iPad的音频播放仍然不支持为iPad。
对于使用iOS 6的iPhone,音频只能在HTML网站的onLoad中播放,如果耳机插入iPhone的音频插孔。
OMG认真,LOL。 – Aaron
有趣的东西! –
Gah,加入Apple后,用户操作正在加载网页,因此需要*两个用户操作(加载一个页面,然后执行其他操作)。尝试触发本机键盘时出现同样的问题。 –
@Tim S:你是说,对于给定的网页:一旦用户加载页面,然后点击播放按钮,你可以随时播放音频,只要你喜欢在该页面上?说,回应一个鼠标悬停事件? –