我想在网络浏览器上每分钟产生一次“哔”声。
对于“每分钟”,我依靠setInterval(),因为有一个秒计数器,我想每秒更新第二个计数器。我非常了解发生的非实时计时事实,但是在这种情况下这没什么大不了的。
真正的交易每隔59秒就会产生一则简短的通知声音。
我目前正在使用音频API。
如下:
a=new AudioContext();
function pitar(volumen, frecuencia, duracion){
v=a.createOscillator()
u=a.createGain()
v.connect(u)
v.frequency.value=frecuencia
v.type="square"
u.connect(a.destination)
u.gain.value=volumen*0.01
v.start(a.currentTime)
v.stop(a.currentTime+duracion*0.001)
}
pitar(999,220,300);
出了什么问题?
这在Safari上不起作用。
这不适用于iOS上的chrome。
特定错误:
针对Chrome的控制台日志说:“不允许启动AudioContext。必须在用户在页面上进行手势操作后恢复(或创建)AudioContext。”
它基本上可以在Firefox上正常工作。
我尝试通过检查AudioContext在当前浏览器中是否可用,并在不可用时使用base64编码的mp3蜂鸣声来做到这一点,按照这种较旧的方法:
How do I make JavaScript beep?
但是,如果没有用户交互(例如,点击页面上的某处),它仍然无法工作。
我可以通过以下方式迫使用户单击一次,方法是说一个类似“嘿,让我们开始”的按钮。
但这将仅允许第一次单击,而不会每隔一分钟启用一次。
我曾考虑过创建一个一分钟的音频文件,其中包括1秒钟的哔哔声和59秒钟的静音时间,然后在重放时播放。但是,即使那样也会有问题,因为蜂鸣声不会与计数器同步。
另一种解决方案是录制视频并循环播放。
关于这个问题-Play infinitely looping video on-load in HTML5-由于自动播放功能在某些浏览器上需要静音,因此它也将不起作用。
有什么方法可以隐藏控制器并创建自定义的javascript播放按钮?
还是您知道实现此目标的更好方法?