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