【问题标题】:HTML speech not working on Safari mac "TypeError"HTML 语音在 Safari mac“TypeError”上不起作用
【发布时间】:2017-04-07 23:15:22
【问题描述】:

HTML5 语音无法在 mac 10.0.1 上的 Safari 上运行,

我得到了错误,

TypeError: SpeechSynthesis.speak 的参数 1 ('utterance') 必须是 SpeechSynthesisUtterance 的一个实例

它适用于 Chrome 和 Firefox,我很确定它曾经适用于 Safari...

var u = new SpeechSynthesisUtterance();
u.text = "hello world";
u.lang = "en";
window.speechSynthesis.speak(u);

【问题讨论】:

  • 嗯,奇怪。我刚刚在相同版本的 Safari (10.0.1) 上对其进行了测试,它运行良好。
  • 这也适用于我在 OS X 10.11.6 上运行的 Safari 10.0.1 (11602.2.14.0.7)。您在哪些版本的 Safari 上看到此错误?如果您运行的是 OS X 10.0.1,我假设您使用的是旧版本的 Safari?
  • 版本是Safari 10.0.1

标签: javascript html safari text-to-speech


【解决方案1】:

好的,终于明白了。

我有一些兼容性代码来支持没有 html5 语音的浏览器,

if (SpeechSynthesisUtterance == undefined) {
    function SpeechSynthesisUtterance(text) {
        this.text = text;
    }
}

这适用于 Chrome 和 Firefox,但在 Safari 上,似乎在解析脚本时会评估任何脚本中的任何函数,因此即使 SpeechSynthesisUtterance 已经存在,该函数也会被声明。

我想我需要以不同的方式来做这件事......

【讨论】:

  • 您可能想要:if (!window.SpeechSynthesisUtterance) { window.SpeechSynthesisUtterance = function(text) { this.text = text; } },如果语句中的命名函数无效:stackoverflow.com/questions/10069204/…
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-25
  • 1970-01-01
  • 2017-09-03
  • 1970-01-01
  • 1970-01-01
  • 2012-01-10
相关资源
最近更新 更多