2011-05-24 37 views
1

我有一个内容脚本读取数据,并使用谷歌tts服务获取输出音频。 该问题涉及通过扩展注入脚本使用内容脚本注入音频

当我通过JavaScript注入音频元素时,我看到正确的url被调用并且音频元素被添加。但它不起作用。我设置了自动播放属性。

片段我使用

var url = 'http://translate.google.com/translate_tts?tl=en&q=' + encoded; 
console.log(url); 
var audio = new Audio(); 
audio.setAttribute('src',url); 
audio.setAttribute('autoplay'); 
var t = document.getElementById('doc'); 
if(t.appendChild(audio)){ 
    console.log('appended'); 
} 

https://chrome.google.com/webstore/developer/detail/dhfpnmpbgjadmhggjeajdfmkcclckeim

回答

0

问题是您无法通过内容脚本加载音频。这可以通过使用后台页面来实现。

0

好了,你不需要追加的孩子,从背景页面做:

var audio = new Audio(url); 
audio.load(); 
audio.play(); 

这应该工作,加载它在JavaScript中,它会播放。

+0

嗯任何一种方式都是一样的。我试过你的方式,但仍然没有工作。 – 2011-05-25 08:28:45

+0

它记录它的正确含义,如果我打开它在播放声音的新标签中的网址。 – 2011-05-25 08:29:40

+0

你是从背景页面做的吗?我在本地做到了,它工作。也许你需要在清单中添加适当的权限,因为它是一个外部资源。 – 2011-05-25 17:24:11

1

我也没有与曼苏尔先生的loadplay建议运气。我认为这里的问题是,你们都有一半是正确的:a)将autoplay设置为true,以及b)在背景页面中进行。

例如,我有这样的背景下页面就好运行:

<!doctype html> 
<html> 
    <body> 
    <script type="text/javascript"> 
     var url = "http://translate.google.com/translate_tts?tl=en&q=Background"; 
     var audio = new Audio(url); 
     audio.autoplay = true; 
    </script> 
    </body> 
</html> 

还请注意,我从来没有附加的元素添加到文档;如果你没有运气,那么你总是可以在appendChild上看看是否有所作为。

此外,我认为你的原始代码应该工作得很好 - 即使ID为doc的元素不存在 - 如果你把它扔到后台页面。

一些更笔记

出于某种奇怪的原因,“纠正”的符号来的&amp;而不是&休息对我来说。尴尬,但只是对其他人的谨慎。另外,如果你只是打开控制台并从上面粘贴三行JavaScript,它可能无法工作 - 除非你在一个特殊的页面,如新标签页面,扩展选项页面,或者,你猜对了,是一个扩展背景页面。我不确定为什么会出现这种情况,但Chrome可能会限制谁可以注入音频内容并进行播放。我不知道为什么会这样,或者是有意的还是无意的。我想,在使用HTML5时另一个警告。

相关问题