为文本到语音和Streamlabs改编JavaScript代码

时间:2019-06-27 17:59:01

标签: javascript text-to-speech

我要从streamlabs.com设置一个新的警报框,并且要对其进行自定义:当有新的关注者时,会在文本上显示关注者的名字!但是我有时间学习javascript或任何其他语言。

我找到了这个https://codepen.io/sgestrella/pen/MxJLXm,它很接近我想要的,但是当我将代码复制/粘贴到https://streamlabs.com/dashboard#/alertbox时,它没有用!所以我想我必须更改一些代码,但是我不知道如何

代码:

<div id="wrapper">
  <textarea id="txtFld">I love the sound of my computer-generated voice.</textarea>
  <div>
    <button type="button" id="speakBtn">Speak</button>
  </div>
</div>

 <div id="txtFld">{userMessage}</div>
<div>
    <button type="button" id="speakBtn">Speak</button>
  </div>
let speakBtn, txtFld;
function init(){
  speakBtn = qs("#speakBtn");
  txtFld = qs("#txtFld");
  speakBtn.addEventListener("click",talk,false);
  if (!window.speechSynthesis) {
    speakBtn.disabled = true;
    qs("#warning").style.display = "block";
  }
}
function talk(){
  let u = new SpeechSynthesisUtterance();
  u.text = txtFld.value;
  speechSynthesis.speak(u);
}
// Reusable utility functions
function qs(selectorText){
  //saves lots of typing for those who eschew Jquery
  return document.querySelector(selectorText);
}
document.addEventListener('DOMContentLoaded', function (e) {
  try {init();} catch (error){
    console.log("Data didn't load", error);}
});

我希望代码在运行测试时自行启动,但是实际上它什么也没做。

1 个答案:

答案 0 :(得分:0)

首先请记住,由于id是唯一的,因此您不能将同一个id用于多个元素。 因此,更改此行:

<div id="txtFld">{userMessage}</div>

关于您的问题: 为了触发div textContent更改,您应该阅读this。 现在,如果将它们结合在一起,我们将得到类似的东西:

<div id="example"></div>
<script>
window.addEventListener('load', function () {
  var element = document.getElementById('example');

  var MutationObserver = window.MutationObserver || window.WebKitMutationObserver || window.MozMutationObserver;
  var observer = new MutationObserver(talk);
  observer.observe(element, {
      childList: true
  });

  setTimeout(function(){
    element.textContent = 'Hello World!';
  }, 1000);

  setTimeout(function(){
    element.textContent = 'Hello Space!';
  }, 2000);

function talk(){
  let u = new SpeechSynthesisUtterance();
  u.text = element.textContent;
  speechSynthesis.speak(u);
}

});
</script>

您可以阅读更多here

希望这能使您走上正确的道路,祝您好运!

我制作了一个可以与here一起玩的codepen。