TWebBrowser가 페이지를 다운로드하기 위해 이미 마쳤다는 것을 아는 방법? 내 문제는 다음과 같습니다. 내 페이지가 완전히 다운로드되어 표시 될 수있는 것을 알 수 없습니다.TWebBrowser가 페이지 다운로드를 완료하면 어떻게 감지합니까?
웹 브라우저에 한 페이지를 요청하고 페이지가 완전히 다운로드되었을 때만 응답을 표시하려고합니다. ..
TWebBrowser가 페이지를 다운로드하기 위해 이미 마쳤다는 것을 아는 방법? 내 문제는 다음과 같습니다. 내 페이지가 완전히 다운로드되어 표시 될 수있는 것을 알 수 없습니다.TWebBrowser가 페이지 다운로드를 완료하면 어떻게 감지합니까?
웹 브라우저에 한 페이지를 요청하고 페이지가 완전히 다운로드되었을 때만 응답을 표시하려고합니다. ..
OnDocumentComplete
이벤트를 처리해볼 수 있습니다.
사이트에서 스크립팅을 사용하여 추가 데이터를 다운로드하는 경우 페이지가 모든 스크립트 실행을 완료하기 전에 이벤트가 실행되기 때문에 employ more sophisticated methods 일 수 있습니다. 일반적으로 작업은 중단 문제처럼 보입니다. 검색하기 어려운 특정 사례를 제외하기 위해 "완전히 다운로드 됨"이라는 정의를 구체화 할 수 있습니다.
는프레임을 언급하지 않았다. 이들은 별도의 문서로 취급되고 주 문서가 완료된 후에로드를 시작합니다. –
각 프레임은 자체 OnDocumentComplete 이벤트를 트리거 한 다음 기본 페이지에서 해당 끝의 OnDocumentComplete 이벤트를 트리거합니다. –
^1 (여기에 표시됨) : http://stackoverflow.com/a/6446675/800214 – whosrdaddy
소스 : http://www.delphifaq.com/faq/delphi/network/f264.shtml
사실, 여러 프레임의 경우, OnDocumentComplete 해고됩니다 여러 번. 모든 프레임이이 이벤트를 발생시키는 것은 아니지만 DownloadBegin 이벤트를 발생시키는 각 프레임은 해당하는 DocumentComplete 이벤트를 발생시킵니다.
'실제 완료'를 어떻게 인식 할 수 있습니까?
OnDocumentComplete 이벤트는 DocumentComplete가 실행되는 프레임 (shdocvw)의 IDispatch 인 매개 변수 pDisp : IDispatch를 보냅니다. 최상위 프레임은 결국 DocumentComplete를 시작합니다.
따라서 페이지 다운로드가 완료되었는지 확인하려면 pDisp이 WebBrowser 컨트롤의 IDispatch와 같은지 확인해야합니다.
procedure IForm1.WebBrowser1Documentccmplete(Sender: Iobject:
const pDisp: Inispatch; var URL: OLEvariant):
var
Curwebrowser : IWebBrowser:
IopWebBrowser: IWebBrowser:
Document : OLEvariant;
WindowName : string:
begin { TForm1.WebBrowser1DocumentComplete }
Curwebrowser := pDisp as IWebBrowser:
TopWebBrowser := (Sender as IWebBrowser).DefaultInterface;
if CurWebrowser=TopWebBrowser then
begin
ShowMessage('Document is complete.')
end
else
begin
Document := CurWebrowser.Document;
WindowName := Document.ParentWindow.Name:
ShowMessage('Frame ' + WindowName + ' is loaded.')
end:
end;
현재 페이지의 동적 특성을 감안할 때 (모든 페이지가 자체 수정 프로그램이 될 수도, 사용자의 행동이나 후에 어떤 임의의 순간에 아직 이상의 파일로 구성되어 결정 : 코드는 아래 보여줍니다 무엇
혜성/아약스 트래픽) 나는 그것이 일반적으로 가능하다고 생각하지 않는다. –