注册客户端脚本块不会在asp.net中的计时器滴答句柄中播放音频

时间:2015-01-28 17:49:06

标签: c# asp.net timer

在Visual Studio的ASP.NET中,我想播放音频以响应定时器的滴答句柄方法,如下面的代码所示。

int i = 0;
protected void Timer1_Tick(object sender, EventArgs e)
{
   i = (int)ViewState["i"];
   PlayArpeggio(i);
   i++;
   ViewState["i"] = i;
}

private void PlayArpeggio(int i)
{
 if (i == 3)
   {
          ClientScriptManager clientScriptManager = Page.ClientScript;
          StringBuilder sb = new StringBuilder();
          sb.Append("<script language='Javascript'>");
          sb.Append("function PlayArpeggioTwo()  {");  
          sb.Append("document.getElementById('arpeggioTwo').play();");
          sb.Append("}");
          sb.Append("PlayArpeggioTwo();");
          sb.Append("<");
          sb.Append("/script>");

              if(!clientScriptManager.IsClientScriptBlockRegistered("JackpotSound"))
              {
               clientScriptManager.RegisterClientScriptBlock(this.GetType(),"JackpotSound",sb.ToString());           
              }
   }
} 

但它不会播放声音。上面的代码适用于我在计时器tick子方法中包含的所有其他内容(基于每次递增&#39; i&#39;)。当然,计时器位于“更新面板”内。我不知道这是否会阻止剧本播放。并且,有没有比这更好的方法呢?

由于 约翰

1 个答案:

答案 0 :(得分:0)

我需要JavaScript来播放音频以响应事件背后的代码,例如“asp:button&#39; s&#39;点击事件,以及“asp:timer&#39; s&#39;打勾事件。但是,正如建议所建议的那样,文件或html页面上的JavaScript似乎无法听到(回应)这些代码背后的代码。事件。 JavaScript仅响应页面刷新,而不响应不同的事件本身。因此,我的解决方法是在asp:button的click事件后面注册脚本,并建立一个JavaScript计时器来执行JavaScript代码,所有这些都是在所需的条件下播放音频。

但是,如果我在按钮元素中使用了On Client Click属性,那么这可以解决我的问题。

帮助我解决自己问题的消息来源包括: Register Client Script at Timer's Tick Event Window Clear Timeout Method