2013-03-15 9 views
5

私はTwidbrowserでWebページの読み込みを高速化するためにtidhttpコントロールを使用しています。 URLへの移動が遅いので、なぜ私はそれを使用しないのですか(WebBrowser1.Navigate('some_url_here'))。ここで私はそれを行う方法です。TwedbrowserでTidhttpを使用する

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; 

私は、ウェブブラウザに直接その文字列を記述した文字列にHTMLコンテンツを取得するためにidHTTPを使用しています。私はローカルウェブサーバーセットアップ(XAMPP)を持っています。私が持っている問題は、HTMLコンテンツがブラウザに書き込まれ、表示されているリンクをクリックした後に、どこにも表示されないことです。つまり、上に「twopage.html」という空白ページがほとんど表示されます。私が右クリックして「ソースを表示」すると、"<html>twopage.html</html>"が奇妙で、実際のページのHTMLではありません。

"myhome.html" ファイルは、それが持つようにあなたは、Webブラウザにロードする前に、HTMLに<base>タグを挿入する必要があり

<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> 
+3

ウェブブラウザには、実際に 'http:// somewhere'にナビゲートしたときのように相対リンクを適切に構築するための"ベースURL "がありません。私はあなたがその "ベースURL"が何であるかを知ることができるかどうか分かりませんが、絶対リンクを含むように "myhome.html"ファイルを変更することができます。例えば、'、あなたの設定でうまくいくでしょう。一方、私はこれがどのようにして重要なやり方でページを読み込む時間を改善することができないのか、CSSや画像、そのような関連リソースを含む複雑なページで動作するかどうかはわかりません – jachguate

+0

私は@jachguateに同意する、[「多分それはできないだろう」](http://social.msdn.microsoft.com/Forums/en-US/wpf/thread/b98fd2b3-72d5-4aab-83d3-40feb01bacef)所望の場所への少なくとも1つの実際のナビゲーション。 – TLama

+0

リンクを絶対に変更しています。これは問題を解決するのではなく、問題を解決するだけです。これは今のところできます。ありがとう。 – megatr0n

答えて

7

含まれてい相対URLを解決する際に使用できるベースURL。

+0

これは素晴らしい動作します。レミー、私はあなたが「外出」している問題についても議論したいと思っています。 – megatr0n

関連する問題