uses里添加mshtml单元procedure TForm1.FormShow(Sender: TObject);
begin
  wb.SetBounds(0,0,600,500);
  wb.Navigate('http://www.computing-age.com');
end;procedure TForm1.wbDocumentComplete(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant);
var doc:IHTMLDocument2;
begin
  if wb.ReadyState=READYSTATE_COMPLETE then begin
    doc:=wb.Document as IHTMLDocument2;
    showmessage(inttostr((doc.body as IHTMLElement).offsetWidth));
    showmessage(inttostr((doc.body as HTMLBody).clientWidth));
    showmessage(inttostr((doc.body as IHTMLElement2).scrollWidth));
    showmessage(inttostr(wb.ClientWidth));
  end;
end;网页宽度理应是Webbroswer的2倍,但是4个结果依次是596,596,596,600,有没有办法获取正确的数值?但计算其他网页如sina,baidu的宽度均是正确的,谢谢

解决方案 »

  1.   

    这个宽度应该是Webbroswer的宽度吧,
      

  2.   

    offsetWidth,clientWidth这两项是webbrowser减去滚动条的宽度但是scrollWidth应该是整个网页的宽度例如打开百度,4个数字是:579,579,680,600,这个680是正确的
      

  3.   

    想到一个方法了,先scrollby,水平滚动9999像素,然后获取 scrollLeft+Webbrowser宽度谢谢bdmh,结贴