gpt4 book ai didi

javascript - "Illegal Invocation"简单脚本错误

转载 作者:行者123 更新时间:2023-11-29 10:31:02 25 4
gpt4 key购买 nike

我想弄乱 Speech Recognition 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 内部,this 将引用window,而windows 不会说话。要解决它,请绑定(bind):

document.body.addEventListener("click", recognition.start.bind(recognition), false);

或者在两者之间使用一个函数:

document.body.addEventListener("click", _=>recognition.start(), false);

关于javascript - "Illegal Invocation"简单脚本错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46024025/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com