在my page上,我在JavaScript中动态创建HTML5音频元素:
bell = new Audio("alarmclock.mp3");
稍后(响应jQuery Countdown对象到期),我播放它:
bell.play();
结果:
我该如何解决此问题?我真的很想让它在MobileSafari中运行,因此我的网络应用程序可以移植。
答案 0 :(得分:4)
关于iPhone Safari:当onclick事件启动时,似乎play()工作。 见http://groups.google.com/group/iphonewebdev/browse_thread/thread/91e31ba7ae25e6d4?hl=en
答案 1 :(得分:3)
很好的问题“我将如何解决此问题?”。这将是我的攻击计划......
$(document).ready(function () { /* ... */ })
在页面加载时加载音频。它还能用吗?答案 2 :(得分:1)
大家好消息
我在某处读到,一旦您在用户交互(例如触摸或点击)中播放了一次声音,您就可以从代码中动态播放它。
因此将音量设置为零并一次性播放所有加载的声音。
我有一个带有单个实例化函数的“touchstart”监听器 一旦用户触摸屏幕,就会播放所有声音。
这是我在 REACT didMount() 中的做法
componentDidMount()
{
let that = this;
document.body.addEventListener('touchstart', function(evt) //First touch event on the screen will trigger this
{
console.log("Audio Setup for iOS:", that.state.allow_sound);
if(!that.state.allow_sound) //False on initial load
{
var Audio1 = document.getElementById("ping");
Audio1.load();
Audio1.volume = 0;
Audio1.play();
var Audio2 = document.getElementById("boom");
Audio2.load();
Audio2.volume = 0;
Audio2.play();
var Audio3 = document.getElementById("splash");
Audio3.load();
Audio3.volume = 0;
Audio3.play();
var Audio4 = document.getElementById("hit");
Audio4.load();
Audio4.volume = 0;
Audio4.play();
that.setState({allow_sound : true})
}
});
}
Then you can call these sounds dynamically from within the code.
答案 3 :(得分:0)
使用
bell = new Audio("alarmclock.mp3");
/*** The magical line ***/
bell.load()
bell.play()
最好在页面加载时使用新的Audio()和load(),并在某些函数调用中对其进行播放()。 因为load()需要一些时间。因此最好在页面加载时load()音频以减少延迟。 希望它能工作。 :)