2009-06-12 2 views
16

자바 스크립트 pageLoad을 주입하는 ASP.Net 컨트롤이 있습니다. 또한 페이지에 직접 pageLoad 기능이 있습니다. 나는 그들을 둘 다 태우는 것처럼 보이지 않는다. 당신은 자바 스크립트에서 같은 이름을 가진 단 하나의 함수로 제한되어 있습니까? 내가 Shog9 동의해야ASP.Net AJAX 다중 페이지로드 기능이 가능합니까?

답변

33

예 ... 대부분의 언어와 마찬가지로 JavaScript는 기호가 해당 범위 내에서 고유해야합니다. JavaScript에서는 주어진 범위 내에서 함수에 대해 여러 정의를 작성한 경우 정의 된 마지막 정의가 "우선"됩니다. 이는 이전 정의가 존재하지 않는 것처럼 보입니다.

이중화 pageLoad 기능을 작동 시키려면해야 할 일은 Sys.Application.add_load() 방법을 사용하는 것입니다. 이를 사용하여 페이지로드 이벤트에 원하는만큼 핸들러를 연결할 수 있습니다. 더 많은 것은 익명 함수를 사용하여 add_load 메서드를 추가 할 수 있습니다. 이렇게하면 중복 된 이름을 가진 핸들러에 위험이 없음을 보장 할 수 있습니다. 예 :

StringBuilder sb = new StringBuilder(); 
    sb.Append("Sys.Application.add_load("); 
    sb.Append("function() { alert('page load'); });"); 

ClientScript.RegisterStartupScript(this.GetType(), "Page_Load", sb.ToString(), true); 

당신은 쉽게 클라이언트 측에서 Sys.Application.add_load을 사용할 수 있습니다, 당신은 심지어 두 번 이상 같은 핸들러 더 추가 할 수 있습니다. 이로 인해 동일한 함수가 여러 번 실행됩니다.

-2

...

는 나는 (문서) .ready (F (N)) 여러 $를 가질 가능성이 각각 차례로 호출되는으로, 하나의 문서에 호출을 알 때 DOM 로딩이 완료됩니다. ClientScript.RegisterStartupScript() 호출을 여러 번 호출해도 문제가 발생하지 않는다고 생각합니다.

+7

Josh, jQuery는 하나의 이벤트에 여러 핸들러를 바인딩하는 것을 지원합니다. 그는 글로벌 pageLoad 함수의 기본 제공 ASP.NET AJAX 자동 바인딩에 대해 설명합니다. ASP.NET AJAX는 하나의 이벤트에 여러 핸들러를 바인딩 할 수 있지만 기본 언어가 동일한 이름을 가진 여러 함수를 지원하지 않는다는 사실은 변함이 없습니다! – Shog9

+0

아 좋은 지적입니다! 나는 원래의 포스트에서 그것을 놓쳤다. 저를 바로 잡아 주셔서 고맙습니다. –

관련 문제