簡體   English   中英

簡單腳本上的“非法調用”錯誤

[英]“Illegal Invocation” error on simple script

我想搞亂語音識別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);

所以在開始之內將引用窗口 ,窗口不能說話。 要解決它,綁定:

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

或使用中間的函數:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM