Использование скрипта контента для ввода аудио - PullRequest
1 голос
/ 24 мая 2011

У меня есть контент-скрипт, который читает данные и, используя сервис Google 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

Ответы [ 3 ]

1 голос
/ 25 мая 2011

Мне также не повезло с рекомендациями мистера Мансура load и play.Я думаю, проблема в том, что вы оба правильно поняли половину: а) установите autoplay на true и б) просто сделайте это на фоновой странице.

Например, я получил этот фонстраница работает нормально:

<!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 и посмотреть, будет ли это иметь значение.

Кроме того, я думаю, что ваш оригинальный код должен нормально работать - даже если элемент с идентификатором doc не существует - если вы добавите его на фоновую страницу.

Еще несколько заметок

По какой-то странной причине "исправляем" амперсанд до &amp; вместо & ломает это для меня.Неловко, но просто предостережение для других.

Кроме того, если вы просто откроете консоль и вставите три строки JavaScript сверху, это, вероятно, не сработает - если вы не находитесь на специальной страниценапример, страница новой вкладки, страница параметров расширения или, как вы уже догадались, страница фона расширения.Я не уверен, почему это так, но Chrome может иметь ограничения на то, кто может вставлять аудиоконтент и воспроизводить его.Я не знаю, почему это так, или намеренно, или непреднамеренно.Наверное, просто еще одно предостережение в работе с HTML5.

0 голосов
/ 03 сентября 2011

Проблема в том, что вы не можете загрузить аудио через контент-скрипт.Это может быть достигнуто с помощью фоновой страницы.

0 голосов
/ 25 мая 2011

Ну, вам не нужно добавлять дочерний элемент и делать это с фоновой страницы:

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

Это должно сработать, загрузите его в JavaScript, и оно будет воспроизводиться.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...