UpdatePanel 내부의 리터럴 컨트롤에 쓰는 자바 스크립트가 있습니다. 나는 매 15 초마다 현재 시간을 알려주도록 설정했지만 항상 원래 시간을 얻는다. Firebug를 사용할 때 스크립트가 업데이트되고 있음을 알 수 있습니다. 부분 페이지를 새로 고침했기 때문입니까? 이 일을 어떻게 멈출 수 있습니까? OutputCache 지시문을 추가하여 캐싱을 시도하여 문제가 있는지 확인했지만 차이는 없습니다.자바 스크립트 업데이트 문제. ASP.net UpdatePanel
여기 코드 샘플입니다. 프런트 엔드 : 뒤에
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<asp:UpdatePanel ID="updTest" runat="server" UpdateMode="Always">
<ContentTemplate>
<script type="text/javascript">
function initScript(){
<asp:literal id="litUpdateScript" runat="server" />
}
</script>
</ContentTemplate>
<Triggers>
<asp:AsyncPostBackTrigger EventName="Tick" ControlID="panelRefresh" />
</Triggers>
</asp:UpdatePanel>
<asp:Timer ID="panelRefresh" Interval="15000" runat="server"></asp:Timer>
코드 :
이Protected Sub panelRefresh_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles panelRefresh.Tick
Me.litUpdateScript.Text = "alert('" & Now.ToString() & "');"
End Sub
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.litUpdateScript.Text = "alert('" & Now.ToString() & "');"
Dim script As String = "initScript();"
ScriptManager.RegisterStartupScript(updTest, updTest.GetType(), "Myscript", script, True)
End Sub
이 페이지로드에 정확한 시간을 발생하지만, 타이머 새로 고침에 변경되지 않습니다. 방화범이 바뀌어 스크립트가 바뀌는 것을 볼 수는 있지만.
코드를 게시하십시오. – TheGeekYouNeed
코드를 보지 않고는 알 수 없지만 JS에서 핸들러를 설정하고 클로저를 생략하는 것이 일반적이므로 변수가 인스턴스화되고 핸들러가 정의 될 때 함수가 실행될 때 호출됩니다. –