2009-03-12 4 views
3

페이지 리디렉션 직전에 일부 Java 스크립트를 실행하려고하지만 실행에 실패했습니다. Response.Redirect를 모두 주석 처리하면 문제가 없지만 특정 요구 사항에 위배됩니다. 이 기능을 구현하는 방법에 대한 아이디어가 있습니까?응답 리디렉션 직전에 javascript를 호출하는 방법

 Dim strscript As String = "<script>alert('hello');</script>" 

     If Not ClientScript.IsClientScriptBlockRegistered("clientscript") Then 
      ClientScript.RegisterStartupScript(Me.GetType(), "clientscript", strscript) 
     End If 

     Response.Redirect("http://www.google.com") 

답변

12

문제는 Response.Redirect가 응답 (...)을 리디렉션하여 클라이언트에 다시 보내기 전에 발생하는 문제입니다. 따라서 클라이언트가 얻는 것은 서버가 아닌 Google의 응답입니다.

페이지에 자바 스크립트를 작성하고 Google에 클라이언트를 보내기 전에 실행되도록하려면 알림 후 javascript에서 리디렉션을 수행해야합니다. 당신이 Response.Redirect를 사용하는 경우

Dim strscript As String = "<script>alert('hello');window.location.href='http://www.google.com'</script>" 

    If Not ClientScript.IsClientScriptBlockRegistered("clientscript") Then 
     ClientScript.RegisterStartupScript(Me.GetType(), "clientscript", strscript) 
    End If 
3

클라이언트가로드 할 수있는 기회가 없습니다. 클라이언트 측에서 리디렉션보십시오 :

Dim strscript As String = "<script>alert('hello');window.location.href("http://www.google.com");</script>" 

If Not ClientScript.IsClientScriptBlockRegistered("clientscript") Then 
    ClientScript.RegisterStartupScript(Me.GetType(), "clientscript", strscript) 
End If 
2

당신이 리디렉션하기 전에 몇 가지 자바 스크립트를 실행하려면, 당신은 자바 스크립트가 아니라 ASP.NET에서 리디렉션을 수행해야합니다.

Dim strscript As String = "<script>alert('hello'); window.location.href='http://www.google.com';</script>" 

If Not ClientScript.IsClientScriptBlockRegistered("clientscript") Then 
    ClientScript.RegisterStartupScript(Me.GetType(), "clientscript", strscript) 
End If 
0

는 실제로 리디렉션에서 URL로 요청을 보내도록 원인이 브라우저에 3XX response를 보냅니다. 응답에 포함 된 데이터를 실제로로드하거나 렌더링하지 않습니다 (실제로 어떤 데이터도 전송되지 않는다고 생각합니다). 페이지가로드 된 후 페이지를 리디렉션하려면로드 후 일정 시간 리디렉션하거나 스크립트 끝 부분에서 자바 스크립트를 리디렉션으로 사용하는 META refresh header을 포함 할 수 있습니다.

+0

사실 리디렉션은 상기 3xx의 코드와 함께 페이지를 "페이지 이동"보냅니다. 브라우저가 영원한 리디렉션 루프에 들어가면 20 초 정도 지나면 브라우저가 포기합니다. – Guffa

+0

확인. 따라서 페이지에 추가 한 데이터는 없습니다 .... – tvanfosson

+0

3xx 상태 코드를 사용하여 자신의 응답 본문을 보낼 수 있지만 99.9 %의 사용자는 해당 브라우저를 보지 못합니다 (브라우저가 렌더링). 보통 자동으로 리디렉션되지 않는 불행한 영혼을 대상으로 리디렉션과 동일한 대상으로 링크를 보냅니다. – Piskvor

1

작동하지 않음 :

string sScript = "<script language='javascript'>alert(\"" + Alertstr + "\"); alert('Record has been Updated Successfully'); </script>"; 
ClientScript.RegisterStartupScript(typeof(Page), "alert", sScript); 
response.redirect("LandingPage.aspx"); 

작업은 :

string sScript = "<script language='javascript'>alert(\"" + Alertstr + "\"); alert('Record has been Updated Successfully'); window.location.href = 'LandingPage.aspx'; </script>"; 
ClientScript.RegisterStartupScript(typeof(Page), "alert", sScript); 
관련 문제