Javascript 按键时播放声音

Javascript 按键时播放声音,javascript,html,audio,Javascript,Html,Audio,有人知道是否有任何预定义的方法可以为从键盘输入到HTML表单中的每个字母播放声音吗 例如:在文本字段中,如果我键入Y,网站会显示Y,以此类推 或者,最好的方法是什么?您必须为所有字母提供声音文件,并使用JavaScript将其称为“按按钮播放事件”。播放声音很容易,向按键添加处理程序也很容易,但没有预定义的方法链接这两个操作,因此您必须键入自己的代码 1)按按键动作 document.onkeydown = function() { ... 2)播放声音 添加音频元素: <aud

有人知道是否有任何预定义的方法可以为从键盘输入到HTML表单中的每个字母播放声音吗

例如:在文本字段中,如果我键入Y,网站会显示Y,以此类推


或者,最好的方法是什么?

您必须为所有字母提供声音文件,并使用JavaScript将其称为“按按钮播放事件”。

播放声音很容易,向按键添加处理程序也很容易,但没有预定义的方法链接这两个操作,因此您必须键入自己的代码

1)按按键动作

document.onkeydown = function() {
    ...
2)播放声音

添加音频元素:

<audio id=alarm>
    <source src=sound/zbluejay.wav>
</audio>
例如,您可以构建一个将键代码链接到声音元素ID的映射:

var sounds = {
   88 : 'alarm', // key 'x'
   ...

};
document.onkeydown = function(e) {
    var soundId = sounds[e.keyCode];
    if (soundId) document.getElementById(soundId).play();
    else console.log("key not mapped : code is", e.keyCode);
}

你可能会找到键码

我刚刚写了一个快速脚本,可以将工作简化为HTML

(函数(){
var keyElements=document.getElementsByTagName('keysound'),
i=关键元素。长度,
键={};
而(我--){
var cur=(keyElements[i].getAttribute('keys')| |“”).toString().split(“”),
v=当前长度,
audio=keyElements[i].getAttribute('src'),
CaseSensitive=keyElements[i].getAttribute('anycase')!==null?true:false,
regexp=keyElements[i].getAttribute('regexp')!==null?true:false;
中频(音频){
而(v--){
cur[v]=不区分大小写?cur[v]:cur[v].toLowerCase();
var src=!regexp?音频:
audio.replace('${key}',cur[v])
.replace('${code}',cur[v].charCodeAt(0));
var ele=document.createElement('audio');
ele.src=src;
文件.正文.附件(ele);
(按键[cur[v]]=按键[cur[v]]| |【】)。按(
ele
);
if(不区分大小写){
(键[cur[v].toUpperCase()]=键[cur[v].toUpperCase()]| | |[])。按(
ele
);
}
}
}
}
控制台日志(键);
window.addEventListener('keydown',函数(evt){
var clist=keys[evt.key]| |[],
clen=clist.length;
而(克莱恩--){
试试{clist[clen].play()}catch(e){}
}
});
})();


谢谢。。我想我得把一切都编好。。刚刚制作完所有字母的声音文件,现在是采取行动的时候了。。谢谢朋友们:)嗨,你能正确地执行它吗。您是如何管理音频播放延迟的?请分享我试过了,但显然音频标签中不存在“播放”的方法。我得到以下错误:“Object[Object Object]没有方法‘play’”。有什么想法吗?那么,你的对象不是音频元素。是的,我意识到我必须访问更多级别才能访问音频对象。谢谢。很好,完整的回答。。。竖起大拇指!运行演示并尝试按键盘上的随机键,这真的很有趣!
var sounds = {
   88 : 'alarm', // key 'x'
   ...

};
document.onkeydown = function(e) {
    var soundId = sounds[e.keyCode];
    if (soundId) document.getElementById(soundId).play();
    else console.log("key not mapped : code is", e.keyCode);
}