2017-09-03 25 views
3

我想要使用語音識別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> 

我該如何解決這個奇怪的錯誤?

+0

嘗試'document.body.onclick = recognition.start;'。 – Bird

+0

不好,不幸的是,同樣的錯誤。 – 1valdis

+1

嘗試'document.body.addEventListener(「click」,function(){recognition.start()},false);' –

回答

3

特殊照顧失去方面:

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

等於:

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

所以開始將把窗口的內部,Windows無法說話。解決它,綁定:

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

或使用函數其間:

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