このコードがあり、それが魅力のように機能する場合、最初の結果の後、in_array 関数は「false」のみを返します。問題が見つかりません。認識を再開するたびに、1つのフレーズに対して機能します...
var myArray = [
'Kontakt',
'gehe zu Kontakt',
'navigiere zu Kontakt',
'navigiere zu Kontakte'
];
function in_array(needle, haystack, argStrict)
{
var key = '',
strict = !! argStrict;
if (strict)
{
for (key in haystack)
{
if (haystack[key] === needle)
return true;
}
}
else
{
for (key in haystack)
{
if (haystack[key] == needle)
return true;
}
}
return false;
};
recognition.onresult = function (event)
{
var pos = textArea.getCursorPosition() - interimResult.length;
textArea.val(textArea.val().replace(interimResult, ''));
interimResult = '';
textArea.setCursorPosition(pos);
for (var i = event.resultIndex; i < event.results.length; ++i)
{
if (event.results[i].isFinal)
{
insertAtCaret(textAreaID, event.results[i][0].transcript);
speak = event.results[i][0].transcript;
index = in_array(speak,myArray,false);
alert(speak);
alert(in_array(speak,myArray,false));
if (index)
{
alert(event.results[i][0].transcript);
}
else
{
alert('Keine Übereinstimmung');
}
}
else
{
isFinished = false;
insertAtCaret(textAreaID, event.results[i][0].transcript + '\u200B');
interimResult += event.results[i][0].transcript + '\u200B';
}
}
};
jsfiddle をテストする場合: http://jsfiddle.net/p3Fxc/