2014-01-08 24 views
1

我寫一個函數誰得到從谷歌音頻元素翻譯:谷歌翻譯文本到語音操作已取消的

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); 
} 

回答

1

設置的iframe的SRC。它會自動播放,或爲音頻設置一個onload處理程序,然後調用play。這很可能是因爲你在下載之前迫使它播放。

+0

謝謝,它似乎與iframe很好地工作。我在問題中添加了解決方案。 – guest459473