본문 바로가기

Delphi/꿀팁

WebBrowser로 JavaScript 실행하기

1. TWebBrowser와 TButton을 하나 올려놓습니다.


2. SHDocVw와 MSHTML을 선언하고 간단한 HTML 소스를 작성합니다.

uses

  .., SHDocVw, MSHTML;

const sHTML =

'<html>                                               ' + sLineBreak +

'<head>                                              ' + sLineBreak +

'<meta charset="utf-8">                            ' + sLineBreak +

'<title> Delphi & JavaScript Test </title>           ' + sLineBreak +

'<script language="JavaScript">                   ' + sLineBreak +


'function HelloWorld(Msg)                          ' + sLineBreak +

'{                                                     ' + sLineBreak +

'  alert("Hello World!" + Msg);                      ' + sLineBreak +

'}                                                     ' + sLineBreak +


'</script>                                            ' + sLineBreak +

'</head>                                             ' + sLineBreak +

'<body>                                              ' + sLineBreak +

'Page Run..                                          ' + sLineBreak +

'</body>                                             ' + sLineBreak +

'</html>                                              ';

3. 폼의 OnShow 이벤트에서 작성한 HTML 소스로 웹브라우저를 실행합니다.

procedure TForm1.FormShow(Sender: TObject);

var

  Doc: Variant;

begin

  if not Assigned(WebBrowser1.Document) then

    WebBrowser1.Navigate('about:blank');


  Doc := WebBrowser1.Document;

  Doc.Clear;

  Doc.Write(sHTML);

  Doc.Close;

end;

4. 버튼의 OnClick 이벤트에서 JavaScript를 실행시킵니다.

procedure TForm1.Button1Click(Sender: TObject);

var

  Doc: IHTMLDocument2;

  HTMLWindow: IHTMLWindow2;

  sFunction: string;

begin

  Doc := WebBrowser1.Document as IHTMLDocument2;


  HTMLWindow := Doc.parentWindow;

  try

    sFunction := Format('HelloWorld("%s")', [' Call Success']); //호출할 함수명과 값을 넣어줍니다.

    HTMLWindow.execScript(sFunction, 'JavaScript');

  except

    ShowMessage('Call Fail');

  end;

end;

5. 호출된 함수와 넘겨준 값이 잘 작동되는지 확인합니다.

반응형