게시판 본문 ASP, ASP.NET, IIS & Script - Read Only

re: 안녕하세요..
작성자: 송원석
작성일시: 2003-11-29 23:48,  조회수: 3,442
안녕하세요? 송원석입니다. ^_^

다행스럽게도 제가 어느정도 알고 있는 부분에 대해서 질문을 해주셨네요. 말씀하신 문제의 요점은 웹 브라우저 컨트롤안에 로드된 HTML 문서에서 발생한 이벤트를 VB 프로그램에서 핸들링 하고 싶으시단 말씀이시죠? 다음을 참고하시기 바랍니다. ^_^

먼저 해당 HTML 문서 자체에 대한 참조를 얻어야 합니다. 이미 웹 브라우저 컨트롤과 폼의 참조는 가지고 있죠. 하지만 거기에 추가로 웹 브라우저 컨트롤에 로드된 HTML 페이지 자체에 대한 참조를 얻어야 합니다.

우선 mainBrowser 변수를 웹 브라우저 컨트롤 참조라고 가정하고, 전역 변수로 다음과 같은 변수 선언을 하나 해주십시요.
Public WithEvents objHTMLDoc    As HTMLDocument
반드시 WithEvents 문을 선언해주셔야만 원하시는 이벤트를 받으실 수 있습니다. 그리고 HTMLDocument 를 사용하시려면 참조에 Microsoft HTML Object Library 를 추가하셔야만 합니다. 그리고 웹 브라우저 컨트롤의 이벤트 중에 DocumentComplete 이벤트가 있는데 이를 다음과 같이 구현합니다.
Private Sub mainBrowser_DocumentComplete(ByVal pDisp As Object, URL As Variant)

    Set objHTMLDoc = mainBrowser.Document
    '** 생략

End Sub
의미는 매우 간단합니다. 이 이벤트는 해당 웹 브라우저 컨트롤에 임의의 HTML 문서가 완전하게 로드가 되면 발생합니다. 따라서 이 이벤트가 발생했다는 의미는 현재 문서가 로드 완료되었다는 뜻이죠. 따라서 위의 코드의 의미는 현재 웹 브라우저 컨트롤에 로드된 문서를 아까 선언한 변수에 참조 할당을 한다는 뜻입니다.

따라서 이제부터는 objHTMLDoc 변수에 해당 문서에 대한 참조가 들어있는 것이죠. 그리고 참고로 위의 이벤트는 HTML 에 FRAME 이 존재하는 경우, FRAME 하나당 한 번씩 각각 발생한다는 점을 기억하시기 바랍니다.

이제 해당 HTML 문서의 onclick 이벤트를 처리해야 하므로 다음과 같은 이벤트 핸들러를 구현합니다. ^_^
Private Function objHTMLDoc_onclick() As Boolean

    If UCase(objWindow.event.srcElement.Id) = "CLOSE" Then
        Unload mainForm
        Set mainForm = Nothing
    End If
    
    objHTMLDoc_onclick = True
    
End Function
아까 objHTMLDoc 변수에 현재 HTML 문서의 참조를 할당한 것 기억나시죠? 따라서 위의 이벤트 헨들러는 현재 HTML 문서를 마우스로 클릭하면 발생합니다. 그런데 문제는 문서의 그 어느 곳을 클릭하든지 이 이벤트가 발생한다는 것이죠. 따라서 해당 클릭이 과연 어디에서 발생한 것인지를 구분해야 합니다.

코드중에 objWindow.event.srcElement.Id 는 현재 클릭 이벤트가 발생한 태그의 아이디 값을 리턴합니다. 따라서 HTML 을 미리 만드실 때 HTML 의 해당 부분에 미리 약속된 아이디를 설정하셔야만 합니다. 위의 경우에는 CLOSE 였구요. 그리고 조건이 맞을 경우 Unload 프로그램을 종료시키시면 되겠죠.

그리고 위의 코드에서 제일 마지막 줄 objHTMLDoc_onclick = True 를 빼먹으시거나 False 를 리턴하시면 모든 클릭 이벤트가 무시됩니다. 주의하시구요. ^_^

감사합니다.
IP 주소: 211.226.150.118
전체 2,095 건의 게시물, 84 페이지로 구성된 ASP, ASP.NET, IIS & Script 게시판의 78 페이지입니다.
게시물
184

re: 오류표시 체크되어 있는뎅.....

송원석

2003-12-13 5,389
183

그 폴더의 용량 알아내기

kein

2003-12-12 1,070
182

re: 그 폴더의 용량 알아내기 [1]

송원석

2003-12-12 3,275
181

오류메세지가 페이지를 찾을수 가 없다고 하는데요

seashark

2003-12-11 927
180

re: 오류메세지가 페이지를 찾을수 가 없다고 하는데요

송원석

2003-12-12 2,950
179

관리자님이 말씀하신데로 지웠는뎅 그래도...

seashark

2003-12-11 885
178

re: 관리자님이 말씀하신데로 지웠는뎅 그래도...

송원석

2003-12-11 2,858
176

업로드 컴포넌트 지원에 대해서

elf

2003-12-09 3,075
175

re: 업로드 컴포넌트 지원에 대해서

송원석

2003-12-09 3,025
174

DEXTUpload 콤포너트 평가판 설치 했는데 또 오류요

seashark

2003-12-09 1,245
173

re: DEXTUpload 콤포너트 평가판 설치 했는데 또 오류요

송원석

2003-12-09 3,432
172

금새 또 왔습니다. ^^

라아

2003-12-08 3,325
171

re: 금새 또 왔습니다. ^^

송원석

2003-12-08 3,523
170

filecube 난 왜 안되지... 도와주세요 관리자님

seashark

2003-12-08 3,530
169

re: filecube 난 왜 안되지... 도와주세요 관리자님

송원석

2003-12-08 3,433
168

진전이 있긴한데요..

라아

2003-12-01 3,388
167

문제 해결.. 그러나..

라아

2003-12-01 3,390
166

re: 문제 해결.. 그러나..

송원석

2003-12-01 3,070
165

re: 적당한 타협.. 결론 [1]

라아

2003-12-01 4,232
164

re: 진전이 있긴한데요..

송원석

2003-12-01 3,327
163

안녕하세요..

김진세

2003-11-29 3,493

re: 안녕하세요..

송원석

2003-11-29 3,442
161

Filecube에서 검색 기능도 구현할 수 있는지 궁금합니다.

꾸리

2003-11-28 3,149
160

re: Filecube에서 검색 기능도 구현할 수 있는지 궁금합니다.

송원석

2003-11-28 3,262
159

운영자님을 존경하기로 한바... [1]

DB

2003-11-27 996