前言
本文為「JavaScript 30」教學影片的學習筆記。
目標
使用 SpeechSynthesisUtterance
物件,驅動瀏覽器的合成語音。
筆記
建立一個 SpeechSynthesisUtterance
物件,並選取相關元素。
1 | const msg = new SpeechSynthesisUtterance(); |
取得文字框的內文。
1 | msg.text = document.querySelector('[name="text"]').value; |
建立一個 populateVoices()
方法,以建立下拉式選單的選項。
1 | function populateVoices() { |
建立一個 setVoice()
方法,以指定聲音。
1 | function setVoice() { |
建立一個 toggle()
方法,在指定聲音時立即切換聲音。
1 | function toggle(startOver = true) { |
建立一個 setOption()
方法,將指定選項設為指定値。
1 | function setOption() { |
監聽 speechSynthesis
,當發生 voiceschanged
事件時,觸發 populateVoices()
方法。
1 | speechSynthesis.addEventListener('voiceschanged', populateVoices); |
監聽下拉式選單,當發生 change
事件時,觸發 setVoice()
方法。
1 | voicesDropdown.addEventListener('change', setVoice); |
監聽所有選項,當發生 change
事件時,觸發 setOption()
方法。
1 | options.forEach(option => option.addEventListener('change', setOption)); |
監聽 speakButton
元素,當發生 click
事件時,觸發 toggle()
方法。
1 | speakButton.addEventListener('click', toggle); |
監聽 stopButton
元素,當發生 click
事件時,觸發 toggle(false)
方法。
1 | stopButton.addEventListener('click', () => toggle(false)); |