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()
|