본문 바로가기

Delphi/꿀팁

WebBrowser로 웹페이지 내 선언된 값 가져오기 - 2

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 SetData(AData)                                    ' + sLineBreak +

'{                                                                ' + sLineBreak +

'  var Data = AData;                                          ' + sLineBreak +

'  document.getElementById(''MyGetData'').value = Data; ' + sLineBreak + //불러올 데이터를 input에 저장합니다.

'}                                                                ' + sLineBreak +

 

'</script>                                                 ' + sLineBreak +

'</head>                                                 ' + sLineBreak +

'<body>                                                  ' + sLineBreak +

'<input type=''hidden'' id=''MyGetData'' value='''' /> ' + 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. Button1의 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 := 'SetData(''TestData'')';

    HTMLWindow.execScript(sFunction, 'JavaScript');

  except

  end;

end;

5. Button2의 OnClick 이벤트에서 4에서 Input Element에 담아놓은 데이터를 가져옵니다.

procedure TForm1.Button2Click(Sender: TObject);

var

  Doc: IHTMLDocument3;

  sGetData : string;

begin

  Doc := WebBrowser1.Document as IHTMLDocument3;


  try

    sData := Doc.getElementById('MyGetData').getAttribute('value', 0);

//지정한 id로 Element를 찾아서 넣어논 값을 가져옵니다.


    ShowMessage(sData);

  except

  end;

end;

6. Input Element에서 가져온 데이터가 맞는지 확인합니다.


2019/03/07 - [Delphi/꿀Tip] - WebBrowser로 웹페이지 내 선언된 값 가져오기 - 1

반응형