2012-06-14 4 views
1

현재 응용 프로그램의 iframe 내에 HTML 파일을 표시하는 GWT 프로젝트에서 작업 중입니다. 이 HTML 파일은 실제로 표시 될 때 쓰여지고, HTML 파일에 대한 변경 사항이 화면에 반영되도록 프레임을 다시로드 할 수 있기를 바라고 있습니다. 개발 모드에서 실행될 때 두 가지가 모두 작동하는 두 가지 방법을 수행 할 수 있지만 프로젝트가 배포 될 때 어느 것도 작동하지 않는 것처럼 보입니다.GWT에서 iframe 다시로드

내가 시도한 첫 번째 방법은 자체 프레임의 URL을 설정했다 :

frame.setUrl(frame.getUrl()); 

두 번째 방법을 내가 JSNI를 사용하여 시도 : 배포하면

public native void refresh() /*-{ 
    if($doc.getElementById('__reportFrame') != null) { 
    $doc.getElementById('__reportFrame').src = 
     $doc.getElementById('__reportFrame').src; 
    } 
}-*/; 

, 프레임이 창에 표시됩니다, 파일 쓰기가 끝나면 이러한 새로 고침 메서드 중 하나를 호출하고 프레임을 완성하여 완성 된 HTML 파일을 포함하도록 새로 고칩니다. 배포 할 때 새로 고침을 호출해도 프레임 내용이 다시로드되지 않지만 Firefox의 프레임 메뉴를 가져 와서 '이 프레임'으로 이동 한 다음 다시로드를 클릭하면 프레임이 성공적으로 다시로드됩니다. 완성 된 HTML 파일을 포함합니다. 행운을 빌려서 여러 버전의 Firefox에서 이것을 테스트했습니다.

누구에게 의견이 있습니까? 왜 행동이 한 모드에서 다른 모드로 다른가요?

감사합니다.

답변

0

와우, 구글은 자신의 검색 ^^ 당신은이 작업을 수행하는 몇 가지 JSNI를 사용할 수 있습니다

와 정말 빠릅니다.

과 같은 메서드를 만듭니다. protected native void reloadIFrame (Element iframeEl)/- { iframeEl.contentWindow.location.reload (true); } - /;

Then call it with your iFrame element 

그래서 당신이 게시 귀하의 질문에 두 번 이미 여기 http://groups.google.com/group/google-web-toolkit/browse_thread/thread/64aa7712890652d3

0

answerd 된 우리는 하나의 GWT 응용 프로그램 (부모) iframe에로드 된 다른 GWT 응용 프로그램 (아이를)했다 요구했다. 자식 응용 프로그램은 특정 DB 작업을 수행 한 후 iframe을 새로 고쳐야했습니다. JSNI를 사용하여 동일한 작업을 수행했습니다.

private native void refreshChild(String url)/*-{ 
$wnd.location.href=url; 
}-*/ 

경우에 따라 하위 프레임을 다른 웹 페이지로 리디렉션해야하는 경우 그에 따라 URL을 수정할 수 있습니다. reload() 메서드를 사용하려고했지만 도움이되지 않았습니다. 위의 코드는 물론 하위 응용 프로그램에 작성해야합니다.