2012-04-11 3 views
6

iframe 요소가 매번 OnDocumentComplete 이벤트를 트리거하지 못하도록하고 싶습니다. 예를 들어 페이지에 iframe이 4 개 있고이 페이지를로드하면 OnDocumentComplete 이벤트가 4 번 실행됩니다. 모든 페이지마다 한 번만 OnDocumentComplete을 실행하고 싶습니다. 어떻게해야합니까?포함 된 iframe 요소에 대해 OnDocumentComplete 이벤트가 발생하지 않도록하려면 어떻게해야합니까?

어쩌면 컨트롤에서 iframes을 제거하거나 차단할 수 있습니다.

+0

나는 당신이 숨기지 말고, 제거하지 않기를 바랍니다. 그래서 ['here'] (http://www.delphidabbler.com/tips/56) 당신은 어떻게 요소를 찾고, 발견 된 요소에'Element.Style : = 'visibility : hidden;''을 설정하려고합니다. – TLama

+0

사실 나는 그들이 매번 OnDocumentComplete 이벤트를 실행하지 못하도록하고 싶습니다. 예를 들어; 페이지에 4 개의 iframe이 있고이 페이지를로드 할 때 OnDocumentComplete 이벤트가 4 회 실행됩니다. 모든 페이지마다 한 번만 OnDocumentComplete를 실행하고 싶습니다. – Leadri

답변

14

주 문서의 각 FRAME/IFRAME에 대해 OnDocumentComplete 이벤트가 발생합니다.
당신은 그들이 이것을 시도 무시하려면 다음과 같이 프레임 또는 문서가 완전히에로드 될 때

특정 작업을 수행하기 위해 OnDocumentComplete 이벤트 핸들러를 쓰기 : 델파이 문서에서

procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject; 
    const pDisp: IDispatch; var URL: OleVariant); 
begin 
    // check that the event is raised for the top-level browser (not frames or iframes) 
    if pDisp = TWebBrowser(Sender).ControlInterface then 
    begin 
    // do something nice... 
    end; 
end; 

웹 브라우저. 프레임이없는 문서의 경우이 이벤트는 문서로드가 완료 될 때 한 번 발생합니다. 여러 프레임을 포함하는 문서에서이 이벤트는 각 프레임마다 한 번 발생합니다. 다중 프레임 문서로드가 완료되면 웹 브라우저가 마지막으로 이벤트를 실행합니다.

보낸 사람은 문서를로드하는 웹 브라우저입니다.

pDisp는 최상위 프레임 또는 브라우저의 자동화 인터페이스입니다. 프레임이없는 문서를로드 할 때 pDisp은 웹 브라우저의 인터페이스입니다. 문서를 여러 프레임으로로드하는 경우 웹 브라우저의 인터페이스 일 때 마지막으로 이벤트가 발생하는 것을 제외하고는 포함하는 프레임의 인터페이스입니다.

+5

+1, 나는 이것을 결코 생각하지 않을 것이다. 좋은! – TLama

+1

작동합니다. 고마워요. – Leadri

+1

큰 IF 문을 감싸는 멋진 유틸리티 함수'InterfaceCompare (x : IDispatch; aObject : TObject) '가 될 것입니다. –

관련 문제