【问题标题】:AJAX and playing a sound onceAJAX 并播放一次声音
【发布时间】:2011-11-25 19:28:19
【问题描述】:

好的,问题来了。我们有一个网站,可以显示我们各种设施的状态更新(它们都有 LCD 和我指向的全屏 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 对象)将声音剪辑添加到文本文件,但这会导致它在每次迭代时播放一次。即使没有变化。

停下来?

【问题讨论】:

  • 为什么这个标签是 jQuery 和 PHP ?
  • 文本文件是通过PHP编辑的,Jquery出错了。但是你来这里只是为了成为一个标签纳粹还是为了回答这个问题?
  • 我来这里是为了尝试回答一个 jQuery 问题……但鉴于您很有礼貌,我会添加我的答案……

标签: javascript ajax flash


【解决方案1】:

changes div 更新后,不要将 flash 添加到 alerts.txt 中,而是创建一个新的 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>");
  }
}

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

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

也看看这个答案 -> Playing dynamically embedded sound object via Javascript

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多