달력

42024  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
비록 인터넷 익스플로러에서만 동작하긴 하지만 브라우저의 "인쇄 미리 보
기"와 "페이지 설정" 메뉴를 프로그래밍적으로 실행시킬 수 있는 방법이 있
다. 우선 아래 버튼을 클릭한 후 어떤 결과가 나오는지 확인해 보기 바란다.
(인터넷 익스플로러 4 이상에서 동작한다.)


위 예제와 같은 결과를 얻으려면 브라우저 컨트롤에 접근할 수 있어야 한다.
이제 실제 소스 코드를 보면서 분석해 보도록 하자.

<script language="javascript">
function ieExecWB( intOLEcmd, intOLEparam )
{
// 웹 브라우저 컨트롤 생성
var WebBrowser = '<OBJECT ID="WebBrowser1" WIDTH=0 HEIGHT=0
CLASSID="CLSID:8856F961-340A-11D0-A96B-00C04FD705A2"></OBJECT>';

// 웹 페이지에 객체 삽입
document.body.insertAdjacentHTML('beforeEnd', WebBrowser);

// if intOLEparam이 정의되어 있지 않으면 디폴트 값 설정
if ( ( ! intOLEparam ) || ( intOLEparam < -1 )  || (intOLEparam > 1 ) )
        intOLEparam = 1;

// ExexWB 메쏘드 실행
WebBrowser1.ExecWB( intOLEcmd, intOLEparam );

// 객체 해제
WebBrowser1.outerHTML = "";
}

</script>

<input type=button value="인쇄 미리 보기" onclick="window.ieExecWB(7)"> 
<input type=button value="페이지 설정" onclick="window.ieExecWB(8)"> 
<input type=button value="인쇄하기(대화상자 표시)"
onclick="window.ieExecWB(6)"> 
<input type=button value="인쇄 바로 하기" onclick="window.ieExecWB(6, -
1)">


위의 소스 코드에서 웹 브라우저 컨트롤에 접근하기 위해 <object> 태그를 사
용하였다. 이 때 웹 브라우저 컨트롤의 고유 클래스 ID인 "8856F961-340A-
11D0-A96B-00C04FD705A2"를 사용하였다. ActiveX 프로그래밍을 해본 사람이라
면 이게 무엇을 의미하는지 쉽게 알 수 있겠지만 잘 모르는 사람도 이 기능을
사용하는데는 큰 문제가 없다. 다만 궁금한 사람들은 레지스트리의
HKEY_CURRENT_USER의 CLSID 부분에서 {8856F961-340A-11D0-A96B-00C04FD705A2}
을 찾아보기 바란다. 이렇게 레지스트리에 등록되어 있는 고유 ID를 <object>
태그를 통해 접근함으로써 해당 컨트롤의 기능을 이용할 수 있는 것이다.

웹 브라우저 컨트롤은 ExecWB란 메쏘드를 가지고 있다. 이 메쏘드를 통하여 브
라우저 메뉴를 접근할 수가 있다. ExecWb 메쏘드의 파라미터로 intOLEcmd와
intOLEparam을 사용하는데 intOLEcmd가 7이면 인쇄 미리 보기, 8이면 페이지
설정, 6이면 인쇄하기이다. 인쇄하기 경우 intOLEparam이 -1이면 대화 상자 없
이 바로 인쇄를 한다. 여기서 ExecWB 메쏘드는 WebBrowser1을 통해 접근하였는
데 이는 <object> 태그 안에서 웹 브라우저 컨트롤에 대한 이름으로
WebBrowser1을 사용했기 때문이다. 이 이름은 사용자가 임의로 지정해 주면 된
다.

만일 인쇄하기와 관련된 전형적인 방법을 알고 싶은 사람은 다음 글을 참조 하
기 바란다.

모든 브라우저에서 인쇄 대화 상자 띄우는 방법
이 외에도 브라우저의 메뉴를 실행시킬 수 있는 방법으로 execCommand 메쏘드
가 있는데 이와 관련된 글을 읽고 싶다면 다음 글을 참조하기 바란다.
Posted by tornado
|