GoBlog/templates/assets/js/speak.js

37 lines
878 B
JavaScript
Raw Normal View History

2020-11-01 17:37:21 +00:00
"use strict";
2021-02-16 20:27:52 +00:00
let sb = document.getElementById('speakBtn')
let s = window.speechSynthesis
function gv() {
return s ? s.getVoices().filter(voice => voice.lang.startsWith(document.querySelector('html').lang))[0] : false
2020-11-01 17:37:21 +00:00
}
2021-02-16 20:27:52 +00:00
function is() {
if (s) {
sb.classList.remove('hide')
sb.onclick = sp
sb.textContent = sb.dataset.speak
2020-11-01 17:37:21 +00:00
}
}
2021-02-16 20:27:52 +00:00
function sp() {
sb.onclick = ssp
sb.textContent = sb.dataset.stopspeak
let ut = new SpeechSynthesisUtterance(
((document.querySelector('article .p-name')) ? document.querySelector('article .p-name').innerText + "\n\n" : '') + document.querySelector('article .e-content').innerText
)
ut.voice = gv()
ut.onerror = ssp
ut.onend = ssp
s.speak(ut)
2020-11-01 17:37:21 +00:00
}
2021-02-16 20:27:52 +00:00
function ssp() {
s.cancel()
sb.onclick = sp
sb.textContent = sb.dataset.speak
2020-11-01 17:37:21 +00:00
}
2021-02-16 20:27:52 +00:00
window.onbeforeunload = ssp
is()