我正在使用tidhttp控件来加速Twebbrowser中网页的加载。导航到网址的速度很慢,这就是为什么我不使用它(WebBrowser1.Navigate('some_url_here')
)。我是这样做的:
procedure TForm1.Button2Click(Sender: TObject);
procedure LoadHtmlIntoBrowser(var WB: TweBbrowser; const HTMLString: string);
var
v: OleVariant;
HTMLDocument: IHTMLDocument2;
begin
WB.Navigate('about:blank');
while WB.ReadyState < READYSTATE_INTERACTIVE do
forms.Application.ProcessMessages;
if Assigned(WB.Document) then
begin
HTMLDocument := WB.Document as IHTMLDocument2;
v := VarArrayCreate([0, 0], varVariant);
v[0] := HTMLString;
HTMLDocument.Write(PSafeArray(TVarData(v).VArray));
HTMLDocument.Close;
end;
forms.Application.ProcessMessages;
end;
var
str:string;
begin
str:=idhttp1.Get('http://localhost/myhome.html');
LoadHtmlIntoBrowser(WebBrowser1,str);
end;
我使用idHTTP
将html内容转换为字符串,然后将该字符串直接写入Webbrowser。我有一个本地Web服务器设置(XAMPP)。我遇到的问题是,在将html内容写入浏览器并点击显示的链接之后,它不会显示在哪里,即它显示一个大多数空白页面,顶部带有“twopage.html”。当我右键单击并“查看源代码”时,我得到"<html>twopage.html</html>"
,这是奇怪的,而不是页面的实际html。
“myhome.html”文件包含
<html>
<head></head>
<body><h1>My home</h1><a href="twopage.html"></a></body>
</html>
The other webpage, "twopage.html" contains
<html>
<head></head>
<body><h1>Another Webpage</h1></body>
</html>
答案 0 :(得分:7)
您需要先将<base>
标记插入HTML,然后再将其加载到网络浏览器中,以便在解析相对网址时有一个基本网址。