RegisterClientScriptBlock 및 RegisterStartupScript는 모두 스크립트 블록을 등록합니다.
ClientScript.RegisterClientScriptBlock(this.GetType(), "script1", "alert(1);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert (2);", true);
RegisterClientScriptBlock은 본문 앞에 등록되는 반면 RegisterStartupScript는 본문 끝에 등록된다는 차이점이 있습니다.
이게 왜요? 일부 성능 최적화 기사에서는 스크립트를 본문에 마지막으로 로드해야 한다고 명시하고 있지만, 일부 애플리케이션의 실제 상황에 따라 이 경우 ClientScript.RegisterStartupScript를 사용해야 합니다.
두 번째 매개변수 키에 대해 이야기해보겠습니다.
두 번째 매개변수 키는 반복 등록을 피하기 위해 사용됩니다. 위 코드에서는 해당 키가 모두 script1이지만 메소드 이름이 다르기 때문에 충돌이 발생하지 않습니다.
다음 코드는 모두 RegisterStartupScript입니다. 두 번째 문장은 이전에 script1 스크립트가 등록되었기 때문에 출력이 없습니다.
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert(2);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script1", "alert (3);", true);
ClientScript.RegisterStartupScript(this.GetType(), "script2", "alert(4);", true);
하지만 , Response.Write는 JavaScript를 출력할 수 있지만 출력 내용이 이전이므로 스타일 시트 오류와 같은 일부 문제가 발생하고 일부 취약한 브라우저에서는 오류가 발생할 수도 있습니다.
ClientScript는 JavaScript를 쉽게 관리할 수 있습니다. ClientScript.RegisterClientScriptBlock과 ClientScript.RegisterStartupScript의 차이점은 단 하나, 즉 RegisterClientScriptBlock은
앞에 코드가 작성됩니다(닫는 태그 참고).public void RegisterClientScriptBlock(유형 유형, 문자열 키, 문자열 스크립트)
public void RegisterClientScriptBlock(유형 유형, 문자열 키, 문자열 스크립트, bool addScriptTags)
public void RegisterStartupScript(유형 유형, 문자열 키 , 문자열 스크립트)
public void RegisterStartupScript(Type type, string key, string script, bool addScriptTags)
둘의 구문이 동일함을 알 수 있습니다.
type 등록할 시작 스크립트의 유형입니다.
key 등록할 시작 스크립트의 키로, 이 스크립트에 지정한 이름입니다. 동일한 키를 가진 스크립트는 중복으로 간주됩니다. 이러한 스크립트의 경우 ClientScriptBlock 및 StartupScript의 동일한 키는 중복으로 간주되지 않습니다.
스크립트 스크립트 코드.
addScriptTags