2011-07-28 6 views
0

私はこれを明確に説明できるかどうかわかりません。Twebbrowserの内部にクライアントを挿入する機能はありますか?

シンプルなHTMLコードがあり、Twebbrowserにロードしています。次に、自分のHTML出力のRectを取得して、Twebbrowserの高さを適切に変更できるようにしたいと考えています。

自動サイズ機能と似ていますが、自動サイズの唯一の高さです。 は可能ですか?

事前にありがとう...

+0

HTMLコードの場合は、JavaScript関数を記述してDelphiの関数を使用できます。 – SimaWB

+0

注意:ブラウザのサイズを変更すると、ページレイアウトとドキュメントの幅と高さが変更される可能性があります。ユースケースによっては、これは望ましくないかもしれません。 –

答えて

2

このコードは、あなたが始める必要があります:

uses MSHTML, Math; 

var 
    HtmlElement, BodyElement:IHTMLElement2; 
    PageWidth, PageHeight: Integer; 
begin 
    with WebBrowser1.ControlInterface do 
    begin 
    HtmlElement:=(Document as IHTMLDocument3).documentElement as IHTMLElement2; 
    BodyElement:=(Document as IHTMLDocument2).body as IHTMLElement2; 
    end; 
    PageWidth:= Max(BodyElement.scrollWidth, HtmlElement.scrollWidth); 
    PageHeight:= Max(BodyElement.scrollHeight, HtmlElement.scrollHeight); 
end; 

HTML要素とBODY要素の両方からサイズを読み取り、最大値彼らはしばしば異なる次元を持っているからです。さらに多くの場合、それらのうちの1つはサイズ0x0を返します。この動作は、ブラウザのバージョンからブラウザのバージョンにも変更されます。これは回避策です。これがあなたのユースケースで対処する正しい方法であるかどうかを確認する必要があります。

注:@Darkerstar画像は、要素の寸法を取得するための古いMSDN図です。更新されたバージョン(IE9用)は、次のようなものです:Measuring Element Dimension and Location with CSSOM in Internet Explorer 9

2

あなたはdocument.body.scrollWidthを使用して、TWebBrowserのドキュメントcompleteイベント内のページの高さをうまくできるとscrollHeight

IE6 clientHeight etc

+0

いい画像。ソース? – NGLN

+0

画像サーバが少し遅くなっているようです – Darkerstar

関連する問題