Javascript &引用;“非法调用”;简单脚本出错
我想搞乱语音识别API,所以我从简单的页面开始,该页面在单击body元素时开始识别。我的scripts.js文件是:Javascript &引用;“非法调用”;简单脚本出错,javascript,Javascript,我想搞乱语音识别API,所以我从简单的页面开始,该页面在单击body元素时开始识别。我的scripts.js文件是: var recognition = new window.webkitSpeechRecognition(); document.body.addEventListener("click", recognition.start, false); 现在,当我点击body元素的任意位置时,Chrome控制台中出现了一个奇怪的错误: Uncaught TypeError: Illeg
var recognition = new window.webkitSpeechRecognition();
document.body.addEventListener("click", recognition.start, false);
现在,当我点击body元素的任意位置时,Chrome控制台中出现了一个奇怪的错误:
Uncaught TypeError: Illegal invocation
它指的是我的HTML代码的第一行。我的HTML文件是:
<!DOCTYPE html>
<html lang="en">
<head>
<title></title>
<link rel="stylesheet" href="style.css">
</head>
<body>
<script src="scripts.js"></script>
</body>
</html>
如何修复这个奇怪的错误?您失去了上下文:
document.body.addEventListener("click", recognition.start, false);
等于:
var start = recognition.start;
document.body.addEventListener("click", start, false);
所以在start的内部,这将指窗口,而窗口不能说话。要解决此问题,请绑定:
document.body.addEventListener("click", recognition.start.bind(recognition), false);
或在以下两者之间使用函数:
document.body.addEventListener("click", _=>recognition.start(), false);
尝试
document.body.onclick=recognition.start
.Nope,很遗憾出现了相同的错误。请尝试document.body.addEventListener(“单击”,函数(){recognition.start()},false)代码>谢谢,现在它可以工作了。但是为什么它是这样工作的,而仅仅通过认可就不起作用呢?开始?相关的