我写了一个从谷歌翻译获取音频元素的函数:
Interface.prototype.say = function( text ) {
var audio = new Audio();
audio.src ='http://translate.google.com/translate_tts?ie=utf-8&tl=fr&q=' + escape( text );
audio.play();
console.log( audio.src );
}
audio.src
返回要翻译的正确字符串,但它什么也没说。在控制台中,在"网络"部分中,我发现:
translate_tts?ie=utf-8&tl=fr&q=Initialisation%20termine
translate.google.com
GET
(canceled)
Pending
game.php:1
Parser
如您所见,文件请求已取消。如果我单击链接(第一行),它运行良好。似乎它不仅在我尝试将文件请求到另一个域时才有效,但它在 Google 翻译域中运行良好。
问题出在哪里?
溶液:
Interface.prototype.say = function( text ) {
var section, frame;
section = document.getElementsByTagName( "head" )[ 0 ];
frame = document.createElement( "iframe" );
frame.src = 'http://translate.google.com/translate_tts?ie=utf-8&tl=fr&q=' + escape( text );
section.appendChild( frame );
}
将 Iframe 设置为 SRC。它将自动播放,或为音频设置一个加载处理程序,然后调用play
。这可能是因为您在下载之前强制播放它。