Javascript &引用;“非法调用”;简单脚本出错

Javascript &引用;“非法调用”;简单脚本出错,javascript,Javascript,我想搞乱语音识别API,所以我从简单的页面开始,该页面在单击body元素时开始识别。我的scripts.js文件是: var recognition = new window.webkitSpeechRecognition(); document.body.addEventListener("click", recognition.start, false); 现在,当我点击body元素的任意位置时,Chrome控制台中出现了一个奇怪的错误: Uncaught TypeError: Illeg

我想搞乱语音识别API,所以我从简单的页面开始,该页面在单击body元素时开始识别。我的scripts.js文件是:

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)谢谢,现在它可以工作了。但是为什么它是这样工作的,而仅仅通过认可就不起作用呢?开始?相关的