2014-12-26 1 views
2

GWT : 2.6.1
이미지로드시 이미지 (이미지 src)를 실행하고 싶습니다. GWT 이미지로드 처리기

나는이 시도하지만, onLoad 이벤트는 트리거되지 않습니다 :
final Image img = new Image(); 
    img.addLoadHandler(new LoadHandler() 
    { 

     @Override 
     public void onLoad(LoadEvent event) 
     { 
      //action 
     } 
    }); 

    img.setUrl("/image.png"); 

그런 다음 나는이 시도 :

final Image img = Image.wrap(Document.get().createImageElement()); 
    img.addLoadHandler(new LoadHandler() 
    { 

     @Override 
     public void onLoad(LoadEvent event) 
     { 
      //action 
     } 
    }); 

    img.setUrl("/image.png"); 

를 그리고 일 ... 이해가 안 돼요 왜 첫 번째 코드 아무것도하지 마세요.

중요 :이 두 예제에서 Image 객체는 dom에 = 넣지 않습니다.

In this question, 이미지가 첨부되지 않은 것 같습니다. 하지만 내 두 번째 샘플 코드에서 이미지도 첨부되지 않습니다? 권리 ?

답변

1

wrap() 메서드에 대한 문서를 살펴보면 This element must already be attached to the document.이라고 표시됩니다. 따라서 실제로 wrap()의 소스를 확인하면 onAttach()이 호출되어 DOM 요소에 이벤트 핸들러가 실제로 등록됩니다. 차이점은 Image 객체가 해당 상태가 아닌 동안 요소가 연결된다고 생각한다는 것입니다.

이제 wrap()이 입장하면 조건이 충족되는지 확인하는 주장이 있습니다. 그들에게 효과적이려면 enable assertions해야합니다.

+0

로드 이벤트를 처리하기 위해 요소를 첨부해야하는 이유를 이해하지 못합니다. 원인은 자바 스크립트의 의무가 아닙니다. – puglic