SpeechSynthesis는 사용자 상호 작용없이 일부 장치에서 실행되는 것이 허용되지 않는 것 같습니다. 내 안드로이드 전원 타블렛에서 허용하는 것 동안, (내가 실수로 그 동안 권한에 대한 뭔가를 변경 관리하면 모르는) 내 PC 브라우저는 그것에 대해 경고하기 위해 사용하지만, 지금은 작동 localhost
에 http
있지만 것을 허용하지에서 에 내 프로덕션 사이트 https
. 전화는 항상 그것을 허용하지 않습니다.
알림을 표시하거나 앱에서 텍스트 음성 변환을 제공하는 옵션을 숨길 수 있도록 실행중인 장치에서 허용 여부를 결정하는 방법이 있는지 궁금합니다.
브라우저에 따라 다릅니다. Chrome은 최소한 사용자 상호 작용없이 기본적으로 음성을 허용하는 데 사용되었지만 조금 전에 변경되었습니다 . 확인하는 한 가지 해키 방법은 빈 발화 를 대기열 에 넣은 다음 SpeechSynthesis.speaking
또는 다음 중 하나 인지 확인하는 것 SpeechSynthesis.pending
입니다 true
.
// Allowed:
btn.onclick = () => {
speechSynthesis.speak(new SpeechSynthesisUtterance(''));
const worked = speechSynthesis.speaking || speechSynthesis.pending;
console.log(worked);
};
<button id="btn">click</button>
// Not allowed, silent failure:
speechSynthesis.speak(new SpeechSynthesisUtterance(''));
const worked = speechSynthesis.speaking || speechSynthesis.pending;
console.log(worked);
안타깝게도 speechSynthesis.speak
먼저 사용자 상호 작용이 없기 때문에 음성이 차단 될 때 (비동기 적으로도) 던지지 않으므로 speaking
속성을 확인하는 것이 유일한 다른 방법 인 것 같습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다