Javascript 不适用于 ASP.NET 上的 Timer Tick 方法

Posted

技术标签:

【中文标题】Javascript 不适用于 ASP.NET 上的 Timer Tick 方法【英文标题】:Javascript wont work on Timer_Tick method on ASP.NET 【发布时间】:2013-11-26 16:07:02 【问题描述】:

我有一个计时器,它每 2 秒计时一次,并获取不断变化的百分比值,当它显示在标签中时效果很好。我想要同样的东西,但要使用 javascript 在消息框中显示,第一次显示很好,但是当值更改时,警报弹出窗口中的值保持不变。

protected void TimerProgress_Tick(object sender, EventArgs e)
            
        percent = max_time.PercentGoalMetToday(i.ToString());  
        lbPercent.Text = percent; //WORKS
        JavaScriptMethod();
    

    protected void JavaScriptMethod()
    
        StringBuilder sb = new StringBuilder();
        sb.Append("<script type = 'text/javascript'>");
        sb.Append("function main()");
        sb.Append("alert('");
        sb.Append(percent);
        sb.Append("');");
        sb.Append("var myVar = setInterval(function ()  main() , 4000);");
        sb.Append("</script>");
        ClientScript.RegisterClientScriptBlock(this.GetType(), "alert", sb.ToString());
    

ASPX

   <asp:UpdatePanel ID="UpdatePanelProgressBar" runat="server">
    <ContentTemplate>
             <asp:Label ID="lblPercent" runat="server" Text="" CssClass="Percent"></asp:Label>  
   </ContentTemplate>
        <Triggers>
            <asp:AsyncPostBackTrigger ControlID="Timer" />
        </Triggers>
    </asp:UpdatePanel>
    <asp:Timer ID="Timer" Interval="2000" runat="server" OnTick="TimerProgress_Tick">
    </asp:Timer>

【问题讨论】:

这个服务器端定时器如何更新客户端上下文? 在 ASPX 页面的更新面板中。 @Apollo,这就是 JavaScript 保持不变的原因。它不在更新面板内。 @MichaelPerrenoud JS 不适用于更新面板。 @Apollo,我并不是说你不能用 UpdatePanel 更改某些 JavaScript,我只是说用 RegisterClientScriptBlock 插入的 JavaScript 不会得到更新使用UpdatePanel,因为它不在UpdatePanel 内。UpdatePanel 的想法是您为标记inside UpdatePanel 获得新的html 【参考方案1】:

我将使用 SignalR 来实现这一点,它旨在让您的服务器与浏览器高效、实时地交换数据。

【讨论】:

【参考方案2】:

我让它工作只需将 ClientScript.RegisterClientScriptBlock 更改为 ScriptManager.RegisterStartupScript 并刷新。

ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "temp", sb.ToString(), false); 

【讨论】:

以上是关于Javascript 不适用于 ASP.NET 上的 Timer Tick 方法的主要内容,如果未能解决你的问题,请参考以下文章

jquery 类更改为 div 不适用于 asp,net

样式不适用于 ASP.NET MVC 站点

自动完成不适用于 IE 的 asp.net 文本框

IISExpress VS.Net 2015 - HTTP 错误 500.22 - 检测到不适用于集成托管管道模式的 ASP.NET 设置

已检测到不适用于集成托管管道模式的 ASP.NET 设置。(该项目甚至不在本地运行)

链接按钮不适用于 IE 10