• 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

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

    These notes are believed to be correct for Delphi 6 and Delphi 7 with Internet Explorer 6, and may apply to other versions as well.
  • 相关阅读:
    catkin_make设置编译并行数
    git操作出现 error: The following untracked working tree files would be overwritten by ...
    《C语言 —— strncat、strncpy、snprintf、fgets》
    C语言 —— 状态机
    《C语言 —— void*的作用》
    《上下文切换 —— 进程上下文切换、线程上下文切换、中断上下文切换》
    Linux 程序调试工具相关
    《Linux系统 —— 环境变量》
    《Linux应用编程 —— 动态库与静态库》
    《摄像头 —— 模拟增益和数字增益》
  • 原文地址:https://www.cnblogs.com/taobataoma/p/850688.html
Copyright © 2020-2023  润新知