이전 Windows VB6 프로젝트의 일부분을 유지해야합니다. (즉, VB.NET으로 마이그레이션하라고 말하지 마십시오.) 이 프로그램은 로컬 HTML 파일 (다른 통계를 포함하지만 중요하지 않음)을로드하는 잘 알려진 웹 브라우저 컨트롤 (IE)을 포함합니다. 웹 브라우저보기에서 스크롤 막대를 원하지 않는다는 것을 알면 (HTML 페이지가 웹 브라우저 창보다 길어도 최상위에 무엇이 있는지 알아야 함) DocumentContext 이벤트에서 DOM을 다음과 같이 관리합니다.DOM 작업 완료를 기다리는 방법?
Private Sub wb_DocumentComplete(ByVal pDisp As Object, URL As Variant)
wb.Document.documentElement.Style.overflow = "hidden"
ProcessWithDStats
End Sub
모든 소리가 제대로 들리고 세로 스크롤 막대가 사라지 긴하지만, 이제는 이전 DOM 작업이 완전히 완료되었는지 확인해야하는 ProcessWithDStats 하위 (많은 기능을 호출하는 큰 하위)에 일부 항목을 추가해야합니다. 평균 : 스크롤바가 숨겨져 있고 내용이이 새로운 너비의 스크롤 막대에 맞게 다시 정렬되었습니다.
그럼, 어떻게해야합니까?
DOM 관리가 실제로 렌더링되기 전에 ProcessWithDStats가 실행됩니다!
는 지금까지 여기 내 시도이다 : 나는 두 선 사이 (문서 폭 및 브라우저 클라이언트 영역을 비교) 스크롤 테스트를 추가하려고했습니다
,하지만 작동하지 않습니다 테스트는 정상이지만 ProcessWithDStats가 사용되기 전에 적용되는 시간이 충분하지 않습니다 (스크롤 막대가 사라지면이 너비가 변경되어 텍스트 리플 로우).
나는) (잠을 시도했다, 그러나 그것은 전체 프로그램 (포함 웹 브라우저 렌더링)
음이 웹 브라우저 컨트롤에서 주어진 DOM 관리의 실제 응용 프로그램을 기다릴 수있는 방법이 잠금 ? 당신은 적어도이 ... 할 필요가
Do
Doevents
Loop Until [DOM modification and rendering completed]
문서에서 프레임을 사용합니까? 그렇다면 컨트롤은 여러 DocumentComplete 이벤트를 발생시킬 수 있으므로 최상위 문서인지 확인하려면 pDisp 매개 변수를 살펴야합니다. if (pDisp is WebBrowser1.Object) Then ... – jac
불행히도, 아니요, Beaner : 프레임이나 iframe이 없습니다. 그러나 내 질문 이후로 나는 시도한 아이디어가 있었고 작동하는 것처럼 보였습니다. (하지만 똑똑하지는 않습니다. 그래서 생각합니다. 그래서 진짜이고 똑똑한 해결책을 기다리고 있습니다). 두 줄 사이에 아무 것도하지 않고 이전 "오버플로 숨겨진"것과 동기되는 장점을 가진 더미 DOM 작업을 추가합니다. doc.parentWindow.scrollBy 0, 1 doc.parentWindow.scrollBy 0, -1 그래서 ProcessWithDStats에 참여하게되면 리플 로우가 수행됩니다. 그것에 대해 어떻게 생각하세요? 더 좋은 방법이 있습니까? – hilow
아무리 좋은 일이 있어도 괜찮은 것 같습니다. – jac