AJAX и проигрывание звука один раз - PullRequest
2 голосов
/ 25 ноября 2011

Хорошо, вот в чем проблема.У нас есть веб-сайт, который отображает обновления статуса на всех наших объектах (все они имеют ЖК-дисплеи с полноэкранной страницей IE, на которую я указываю).Прямо сейчас я захожу на свою страницу управления с помощью WYSIWYG-редактора, набираю сообщения / обновления, которые сохраняют его в файл .txt (alert.txt) и обновляет страницу на экранах через AJAX.Страница на экранах проверяет наличие обновлений с установленным интервалом в 5 секунд.

Теперь я хочу воспроизвести звуковой сигнал, предупреждающий об обновлении (на экране отображаются только критические сетевые ошибки и т. Д.)

Я использую

<body onload="window.setTimeout('loadXMLDoc()',1000);">

, который вызывает это:

<script type="text/javascript">
function loadXMLDoc()
{
var xmlhttp;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
  document.getElementById("changes").innerHTML=xmlhttp.responseText;
  }
}
xmlhttp.open("GET","alerts.txt",true);
xmlhttp.send();
}
</script>

Я попытался добавить аудиоклип с помощью встроенного HTML-кода (создал объект Flash, которыйвоспроизводит его один раз при загрузке объекта Flash) в текстовый файл, но это приводит к его воспроизведению один раз за каждую итерацию.Даже если нет изменений.

Halp?

1 Ответ

0 голосов
/ 25 ноября 2011

Вместо добавления флэш-памяти в alerts.txt создайте новый объект DOM после обновления changes div:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
  document.getElementById("changes").innerHTML=xmlhttp.responseText;
  // Add Flash object to DOM
   var emb = document.createElement("embed");
   emb.setAttribute("type","application/x-shockwave-flash");   
   emb.setAttribute("autostart","true"); 
   emb.setAttribute("data","<your url>");
  }
}

Вам нужно будет изменить URL-адрес, чтобы он соответствовал URL-адресу вашего звукового флэш-файла, и добавьте все атрибуты, которые вам нужно установить

Существует проблема с этим подходом в том, что объект будет создаваться каждый раз .... так что, возможно, вы могли бы изменить сначала удалить элемент, а затем повторно добавить его.

Также проверьте этот ответ -> Воспроизведение динамически встроенного звукового объекта через Javascript

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