TWebBrowser OleObject and Document data

TWebBrowser 
OleObject and Document data 

-------------------------------------------------------------------------------- 

Introduction 
The OleObject property exposes the objects internal to TWebBrowser. For full details of the objects accessible see http://msdn.microsoft.com/workshop/author/dhtml/reference/objects.asp. 

Everything that is accessible via the OleObject property is also accessible via the Document property. In general obtaining data via the Document property route is more cumbersome, because it involves using other classes/interfaces, but it does offer better error checking. 

The purpose of this page is not to provide comprehensive documentation on OleObject, but to describe those members that I have found useful in the past. For most of these I have aimed to provide the corresponding Document access method. Code fragments are included for illustration only. 

Significant or interesting object attributes: 

WebBrowser.OleObject.Document 
WebBrowser.OleObject.Document.All 
WebBrowser.OleObject.Document.bgColor 
WebBrowser.OleObject.Document.Body.Style.overflowX 
WebBrowser.OleObject.Document.Body.Style.overflowY 
WebBrowser.OleObject.Document.Body.Style.zoom 
WebBrowser.OleObject.Document.cookie 
WebBrowser.OleObject.Document.documentElement.innerHTML 
WebBrowser.OleObject.Document.documentElement.innerText 
WebBrowser.OleObject.Document.FileSize 
WebBrowser.OleObject.Document.Frames 
WebBrowser.OleObject.Document.Images 
WebBrowser.OleObject.Document.LastModified 
WebBrowser.OleObject.Document.Links 
WebBrowser.OleObject.Document.Location.Protocol 
WebBrowser.OleObject.Document.ParentWindow 
WebBrowser.OleObject.Document.ParentWindow.ScrollBy(iX: Integer; iY: Integer) 
WebBrowser.OleObject.Document.selection 
WebBrowser.OleObject.Document.Title 
WebBrowser.OleObject.Document.URL 

-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document 
Provides information on the document display. For details see http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_document.asp. 

Document equivalent: 

WebBrowser.Document as IHTMLDocument2 
Note: 

If no document has been loaded then (WebBrowser.Document as IHTMLDocument2) will be nil. To avoid a run-time exception check the value before using it, for example: 
var 
 document: IHTMLDocument2; 
begin 
 document := WebBrowser.Document as IHTMLDocument2; 
 if Assigned(document) then 
   . 
   . 
For brevity, not all of the examples on this page include this error checking. 

-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.All 
Array of all the items/objects in the document. This includes images, links, text etc. 

.Length Returns the number of elements in the array. 
.Item(0) Returns the first document element. 
.Item(n).InnerText Read/write the text between the start and end tags of the item. 
.Item(n).ScrollIntoView(bAlignToTop: Boolean)  Scrolls item 'n' into view. bAlignToTop = true to align it with the top of the window. bAlignToTop = false to align with the bottom of the window. 

Document equivalent: 

var 
 document: IHTMLDocument2; 
 docAll: IHTMLElementCollection; 
begin 
 document := WebBrowser.Document as IHTMLDocument2; 
 if Assigned(document) 
   docAll := document.all; 

-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.bgColor 
Sets or retrieves the background colour for the document. For example to set the background colour to white: 

WebBrowse.OleObject.Document.bgColor := '#FFFFFF'; 
or to set it to black: 

WebBrowse.OleObject.Document.bgColor := '#000000'; 

-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.Body.Style.overflowX 
Read/write string value specifying whether horizontal scroll bar is shown. Values are: 

visible Default. No scroll bar. Display is clipped to visible area. 
scroll Scroll bar always visible - whether required or not. 
hidden No scroll bar. Content outside of visible area is hidden. 
auto Content is clipped and scroll bar is displayed if required. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.Body.Style.overflowY 
As for WebBrowser.OleObject.Document.Body.Style.overflowX but for the vertical scroll bar. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.Body.Style.zoom 
Sets or retrieves the magnification used. Default is 1, for no magnification. To show at half its normal size use 0.5. To show at twice its normal size use 2. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.cookie 
Returns a string holding all browser cookies - these are the cookies stored locally and not server side cookies. 

Document equivalent: 

var 
 document: IHTMLDocument2; 
 cookies: String; 
begin 
 document := WebBrowser.Document as IHTMLDocument2; 
 if Assigned(document) then 
   cookies := document.cookie; 
Cookies are represented in the string in the form: 

name = value 

Note: 

If there is more than one name/value pair then these are separated by a semi-colon (';'). 
Some characters may be 'escaped' - that is represented by a percent symbol followed by a two digit hexadecimal number representing the ASCII code of the character. For a list of ASCII codes click here. 

-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.documentElement.innerHTML 
For HTML documents returns the document including its HTML. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.documentElement.innerText 
Returns the text content of the document - without any (HTML) formatting. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.FileSize 
Returns the size of the html document in bytes. 

Document equivalent: 

(WebBrowser.Document as IHTMLDocument2).FileSize 
Note that the document equivalent returns the file size as a string and it will throw an exception if no page is loaded. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.Frames 
Array of frames in the document. 

.Length Returns the number of frames in the document. 
.Item(0) Returns the first frame. 
.Item(0).Document Returns the document object representing the frame. 
.Item(0).Document.URL Returns the URL of the first frame. 

Document equivalent: 

(WebBrowser.Document as IHTMLDocument2).Frames 
for example, to obtain information about a frame as (an IHTMLWindow2 or IHTMLDocument2): 

var 
 document: IHTMLDocument2; 
 ole_index: OleVariant; 
 doc_all: IHTMLElementCollection; 
 frame_dispatch: IDispatch; 
 frame_win: IHTMLWindow2; 
 frame_doc: IHTMLDocument2; 
begin 
 document := WebBrowser.Document as IHTMLDocument2; 
 ole_index := 0; 
 frame_dispatch := document.Frames.Item(ole_index); 
 if frame_dispatch <> nil then 
 begin 
   frame_win := frame_dispatch as IHTMLWindow2; 
   frame_doc := frame_win.document; 
     . 
     . 

-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.Images 
Array of images contained in the document. 

.Length Returns the number of images in the document. 
.Item(0) Returns the first image. 
.Item(0).Src Read or write the path to the first image. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.LastModified 
Returns when the document was last modified, as a string. Officially the format is "MM/DD/YY hh:mm:ss", but in my experience it is normally "MM/DD/YYYY hh:mm:ss". 

Document equivalent: 

var 
 htmlDoc: IHTMLDocument2; 
 dateString: String; 
begin 
 htmlDoc := WebBrowser.Document as IHTMLDocument2; 
 if Assigned(htmlDoc) 
   dateString := html_doc.LastModified; 

-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.Links 
Array of all links (i.e. "<a href...>" elements). 

.Length Returns the number of links. 
.Item(0) Returns the first link. 
.Item(0).href Returns the address of the first link. 
.Item(0).TagName Returns the name of the type of the first link. For links this is always 'A'. 

Document equivalent: 

var 
 htmlDoc: IHTMLDocument2; 
 allLinks: IHTMLElementCollection; 
 firstLink: IHTMLElement; 
 url: String; 
begin 
 htmlDoc := WebBrowser.Document as IHTMLDocument2; 
 allLinks := htmlDoc.Links; 
 firstLink := allLinks.Item(0,'') as IHTMLElement; 
 url := firstLink.toString; 

-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.Location.Protocol 
Returns a string representing the 'protocol' portion of the URL. This will (typically) be one of: 

Protocol Value Meaning 
file: Local or network file. 
ftp: FTP. 
gopher: Gopher session. 
http: Hypertext Transfer Protocol 
https: Secure Hypertext Transfer Protocol. 
javascript: JavaScript code. 
mailto: Client e-mail. 
news: Newsgroup. 
res: Resource file. 
telnet: Telnet terminal login. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.ParentWindow 
Returns a (read-only) reference to the container window. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.ParentWindow.ScrollBy(iX: Integer; iY: Integer) 
Scrolls the window horizontally by 'iX' pixels - a negative value scrolls left, a positive value scrolls right. Scrolls the window vertically by 'iY' pixels - a negative value scrolls up and a positive value scrolls down. 

Document equivalent: 

var 
 document: IHTMLDocument2; 
 begin 
   document := webBrowser.Document as IHTMLDocument2; 
   if Assigned(document) then 
     document.parentWindow.scrollBy(iX,iY); 

Note: 

The window will not scroll up/down if it has already reached its normal top/bottom limit. Similarly it will not scroll left/right if it has already reached its normal left/right limit. So for example, when a document is first loaded trying to scroll it by -1,-1 will have no affect. 
This has implications for a framed document since typically the top-level document will not scroll even though the frames it contains will. The following procedure illustrates how to scroll every document and frame, including embedded frames: 
procedure ScrollBrowserWindowBy(const window: IHTMLWindow2; iX:Integer; iY:Integer); 
var 
 index: Integer; 
 oleIndex: OleVariant; 
 frameDispatch: IDispatch; 
 childWindow: IHTMLWindow2; 
 document: IHTMLDocument2; 
begin 
 if Assigned(window) then 
 try 
   window.scrollBy(iX,iY); 
   // If there are any frames then try scrolling them. 
   document := window.Document as IHTMLDocument2; 
   if Assigned(document) then 
     for index := 1 to document.Frames.Length do 
     begin 
       oleIndex := index-1; 
       frameDispatch := document.Frames.Item(oleIndex); 
       if Assigned(frameDispatch) then 
       begin 
         childWindow := frameDispatch as IHTMLWindow2; 
         ScrollBrowserWindowBy(childWindow,iX,iY); 
       end; 
     end; 
 except 
 on E: Exception do begin end; 
 end; 
end; 

and to invoke it: 

var 
 document: IHTMLDocument2; 
begin 
 document := webBrowser.Document as IHTMLDocument2; 
 if Assigned(document) then 
   ScrollBrowserWindowBy(document.parentWindow,5,10); 

If you attempt to call 'scrollBy' for a window frame containing an off-site page then it will throw an "access denied" exception, hence the "try .. except" in the above example. 

-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.selection 
Provides access to the currently selected portion of the document. 

For example, to access the currently selected text: 

var 
 document: IHTMLDocument2; 
 selectionObj: IHTMLSelectionObject; 
 selectionRange: IHtmlTxtRange; 
 selectedText: String; 
begin 
 document := WebBrowser.Document as IHTMLDocument2; 
 selectionObj := document.selection; 
 selectionRange := selectionObj.CreateRange as IHtmlTxtRange; 
 selectedText := selectionRange.text; 
   . 
   . 
Note: The above example would need to be modified slightly for a document with frames. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.Title 
The title of the current document. This is the same as the property LocationName. 


-------------------------------------------------------------------------------- 

WebBrowser.OleObject.Document.URL 
The URL of the current document. This is the same as the property LocationURL. 


-------------------------------------------------------------------------------- 

See also: 

http://msdn.microsoft.com/workshop/author/dhtml/reference/objects.asp 
http://msdn.microsoft.com/workshop/author/dhtml/reference/objects/obj_document.asp. 
http://www.swissdelphicenter.com/en/tipsbycomp.php?component=Webbrowser 
http://members.shaw.ca/iedelphi/webbrowser.htm 

-------------------------------------------------------------------------------- 




    本文转自 OldHawk  博客园博客,原文链接:http://www.cnblogs.com/taobataoma/archive/2007/08/10/850688.html,如需转载请自行联系原作者



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值