2011-09-05 4 views
7

GWT 응용 프로그램 내에서 네이티브 함수로 작업하고 있는데이 두 가지 방법을 시도했습니다. 문서 .getElementById ("id")는 null을 반환하지만 $ doc.getElementById()는 유효한 요소를 반환합니다. 이 방법들간에 (개념적으로) 차이점은 무엇입니까? 미리 감사드립니다.

답변

7

GWT 앱의 코드는 (숨겨진) iframe에서 실행되므로 document은 iframe의 문서를 참조하며 iframe의 탐색 컨텍스트는 window입니다. 따라서 GWT는 변수 $doc$wnd을 초기화하여 GWT 응용 프로그램을로드하는 "호스트 페이지"의 문서 및 탐색 컨텍스트 ()를 쉽게 참조 할 수있게합니다. 링커는 컴파일 된 코드가로드되는 방법을 결정

참고 기본 일 (std)와 새로운 xsiframe 사용 iframe을, 사용되지 않는 xs 부하 반면 같은 브라우징 컨텍스트 (그래서 $doc == document$wnd == window)

2

의 코드 GWT JSNI page에서 :

코드는 메서드 내에서 직접 JavaScript 윈도우 객체를 참조하지 않았습니다. JSNI의 브라우저 창과 문서 객체에 액세스 할 때 각각 $ wnd와 $ doc로 참조해야합니다. 컴파일 된 스크립트는 중첩 된 프레임에서 실행되며 $ wnd 및 $ doc는 호스트 페이지의 창과 문서를 올바르게 참조하도록 자동으로 초기화됩니다.

관련 문제