首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> Delphi

Delphi WebBrowser 例程:插入 HTML 與執行腳本完整指南

     編輯:Delphi

TWebBrowser 文檔操作三大核心技巧:執行腳本、追加 HTML、重載 HTML

整理 TWebBrowser 常用文檔操作,封裝為三個通用過程:ExecuteScript(執行 JS/VBS)、AppendToWB(追加 HTML,不執行腳本)、WBLoadHTML(重載整頁,支援腳本執行)。

界面效果:

WebBrowser 例程界面

核心代碼

{執行腳本}
procedure TfrmSavePages.ExecuteScript(aWebBrowser: TWebBrowser; lScript: TStrings; language: String = 'javascript');
var HTDoc: IHTMLDocument2;
begin
  HTDoc := aWebBrowser.Document as IHTMLDocument2;
  if (HTDoc <> nil) and (HTDoc.parentWindow <> nil) then
    HTDoc.parentWindow.ExecScript(lScript.Text, OleVariant(language));
end;

{追加 HTML(不執行腳本)}
procedure AppendToWB(aWebBrowser: TWebBrowser; lHTML: TStrings);
var HTDoc: IHTMLDocument2; Range: IHTMLTxtRange;
begin
  HTDoc := aWebBrowser.Document as IHTMLDocument2;
  if HTDoc <> nil then begin
    Range := (HTDoc.body as IHTMLBodyElement).createTextRange;
    Range.Collapse(False);  {移至末尾}
    Range.PasteHTML(lHTML.Text);
  end;
end;

{重載 HTML(支援腳本執行)}
procedure WBLoadHTML(WebBrowser: TWebBrowser; lHTML: TStrings);
var ms: TMemoryStream;
begin
  WebBrowser.Navigate('about:blank');
  while WebBrowser.ReadyState < READYSTATE_INTERACTIVE do Application.ProcessMessages;
  if Assigned(WebBrowser.Document) then begin
    ms := TMemoryStream.Create;
    try
      lHTML.SaveToStream(ms);
      ms.Seek(0, soFromBeginning);
      (WebBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
    finally ms.Free; end;
  end;
end;

用法示例

{執行 JS}
Memo1.Lines.Add('alert("Hello World!");');
ExecuteScript(WebBrowser1, Memo1.Lines, 'javascript');

{追加 HTML}
Memo1.Lines.Add('
AppendToWB 演示
'); AppendToWB(WebBrowser1, Memo1.Lines); {重載含腳本頁面} Memo1.Lines.Add(''); WBLoadHTML(WebBrowser1, Memo1.Lines);

選擇建議: 需執行腳本用 WBLoadHTML(相當於重新導航);單純追加內容用 AppendToWB(較輕量);動態交互用 ExecuteScript。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved