AJAX并播放一次声音

时间:2011-11-25 11:07:05

标签: javascript ajax flash

好吧,这就是问题所在。我们有一个网站,在我们的各种设施中显示状态更新(他们都有带有全屏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 :(得分:0)

alerts.txt div更新后,不再将Flash添加到changes创建新的DOM对象:

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

您需要更改网址以匹配声音Flash文件的网址,并添加您需要设置的任何属性

这种方法存在一个问题,即每次都会创建对象....所以也许你可以先修改删除元素然后重新添加它。

同时查看此答案 - &gt; Playing dynamically embedded sound object via Javascript