上一篇:TWebBrowser控件彻底防止弹出新窗口
下一篇:Delphi使用WM_SYSCOMMAND消息

TWebBrowser直接读写HTML源码

发布于: 2012-12-16 18:26:29   |  发布在: Delphi文章   |  点击:

网上收集的代码,自己稍微改了一下,TWebbrowser直接读写网页HTML源代码的方法很多,这里选择了一种比较适用的。需要注意的一点就是,有的HTML代码有“设置字符集为UTF-8编码方式”的语句的,需将写入WebBrowser的字符串进行UTF-8编码(使用AnsiToUtf8函数),或者将HTML代码的UTF-8换成GB2312,不然会显示中文乱码。这里采用的是后者,废话不多说了,直接贴源码。

uses ActiveX;

function WB_ReadHTML(aBrowser: TWebBrowser): String;
begin
  Result := aBrowser.OleObject.Document.documentElement.outerHTML;
end;

procedure WB_WriteHTML(aBrowser: TWebBrowser; HTMLCode: string);
var
    sl: TStringList;
    ms: TMemoryStream;
begin
    if Assigned(aBrowser.Document) then
    begin
      sl := TStringList.Create;
      try
        ms := TMemoryStream.Create;
        try
          sl.Text := StringReplace(HTMLCode, 'UTF-8', 'GB2312', [rfReplaceAll, rfIgnoreCase]);
          sl.SaveToStream(ms);
          ms.Seek(0, 0);
          (aBrowser.Document as IPersistStreamInit).Load(TStreamAdapter.Create(ms));
        finally
          ms.Free;
        end;
      finally
        sl.Free;
      end;
    end;
end;

调用例子:
procedure TForm1.Button1Click(Sender: TObject);
begin
  WB_WriteHtml(Webbrowser1, Memo1.Text);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  Memo1.Text := WB_ReadHTML(Webbrowser1);
end;

TWebBrowser网页