Я использую элемент управления tidhttp для ускорения загрузки веб-страницы в Twebbrowser. Навигация по URL-адресу медленная, поэтому я ее не использую (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. У меня есть локальная настройка веб-сервера (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>
http://somewhere
. Я не знаю, можете ли вы сообщить, что это за базовый URL-адрес, но вы наверняка можете изменить свой файл myhome.html, включив в него абсолютные ссылки, например<a href="http://localhost/twopage.html">
, которые, я уверен, будут работать в вашем настраивать. С другой стороны, я действительно не понимаю, как это может значительно сократить время загрузки страницы, и я не уверен, что это работает со сложной страницей, включающей связанные ресурсы, такие как css, изображения и тому подобное. - person jachguate   schedule 16.03.2013maybe it's not even possible
без хотя бы одного реального перехода в нужное место. - person TLama   schedule 16.03.2013<base>
в HTML перед загрузкой его вwebbrowser
, чтобы веб-браузер имел базовый URL-адрес для разрешения относительных ссылок. - person Remy Lebeau   schedule 16.03.2013