WebBrowser 控制元件-說明

mrhaozi發表於2010-03-23

控制元件檔案:system32shdocvw.oca shdocvw.dll
註冊:regsvr32 shdocvw.dll
WebBrowser 是 IE 核心做的 VB 控制元件,
WebBrowser.Document 為活動的文件返回自動化物件,引用 Microsoft HTML Object Library 可檢視詳細屬性和方法

下面的解說假設窗體中有一個名稱為 Web1 的 WebBrowser 控制元件
■■方法 ==============================
▲GoBack 相當於IE的“後退”按鈕,使你在當前歷史列表中後退一項
▲GoForward 相當於IE的“前進”按鈕,使你在當前歷史列表中前進一項
▲GoHome 相當於IE的“主頁”按鈕,連線使用者預設的主頁
▲GoSearch 相當於IE的“搜尋”按鈕,連線使用者預設的搜尋頁面
▲Navigate 連線到指定的 URL,並顯示網頁
▲Navigate2 與 Navigate 作用同?
▲Refresh 重新整理當前頁面
▲Refresh2 同上,只是可以指定重新整理級別,所指定的重新整理級別的值來自RefreshConstants列舉表,
該表定義在ExDisp.h中,可以指定的不同值如下:
REFRESH_NORMAL 執行簡單的重新整理,不將HTTP pragma: no-cache頭髮送給伺服器
REFRESH_IFEXPIRED 只有在網頁過期後才進行簡單的重新整理
REFRESH_CONTINUE 僅作內部使用。在MSDN裡寫著DO NOT USE! 請勿使用
REFRESH_COMPLETELY 將包含pragma: no-cache頭的請求傳送到伺服器
▲Stop 相當於IE的“停止”按鈕,停止當前頁面及其內容的載入
■■屬性===================================
▲Document 為活動的文件返回自動化物件。如果HTML當前正被顯示在 Web1 中,則 Document 提供
對DHTML Object Model的訪問途徑。下面有詳細介紹
▲TopLevelContainer 返回一個Boolean值,表明 IE 是否是 Web1 控制元件頂層容器,是就返回 true
▲Type 返回已被 Web1 控制元件載入的物件的型別。例如:
如果載入.doc檔案,就會返回 Microsoft Word Document
▲LocationName 返回一個字串,該字串包含著 Web1 當前顯示的資源的名稱,
如果資源是網頁就是網頁的標題;
如果是檔案或資料夾,就是檔案或資料夾的名稱
▲LocationURL 返回 Web1 當前正在顯示的資源的 URL
▲Busy 返回一個Boolean值,說明 Web1 當前是否正在載入 URL,如果返回 true
就可以使用 stop 方法來撤銷正在執行的訪問操作
▲Object 設定返回一個顯現網頁的 SHDocVwCtl.WebBrowser_V1 物件。參見下文。
▲MenuBar
▲StatusBar
▲ToolBar
▲Visible

■■ 事件===================================
▲BeforeNavigate2 導航發生前觸發(開啟網頁前),重新整理時不觸發
▲CommandStateChange 當命令的啟用狀態改變時觸發。它表明何時啟用或關閉Back和Forward選單項或按鈕
▲DocumentComplete 當整個文件完成是觸發,重新整理頁面不觸發
▲DownloadBegin 當某項下載操作已經開始後觸發,重新整理也可觸發此事件
▲DownloadComplete 當某項下載操作已經完成後觸發,重新整理也可觸發此事件
▲NavigateComplete2 導航完成後觸發,重新整理時不觸發
▲NewWindow2 彈出新視窗以前觸發
可在此事件中設定 ppDisp 引數新網頁顯示物件,同時不會出現 SHDocVwCtl.WebBrowser_V1 的 NewWindow 事件
▲OnFullScreen 當 FullScreen 屬性改變時觸發。該事件採用 VARIENT_BOOL 的一個輸入引數來指示 IE 是全
屏顯示方式(VARIENT_TRUE)還是普通顯示方式(VARIENT_FALSE)
▲OnMenuBar 改變 MenuBar 屬性時觸發,標示引數是 VARIENT_BOOL 型別的。
VARIANT_TRUE 可見,VARIANT_ FALSE 隱藏
▲OnQuit 無論是使用者關閉瀏覽器還是開發者呼叫Quit方法,當IE退出時就會觸發
▲OnStatusBar 改變 StatusBar 屬性時觸發,標示狀態列是否可見。
▲OnToolBar 改變 ToolBar 屬性時觸發,標示工具欄是否可見。
▲OnVisible 改變 Visible 屬性時觸發
▲StatusTextChange 控制元件的狀態資訊改變時觸發。
▲TitleChange 網頁標題改變時觸發。引數 Text 是新標題,Web1.LocationName 屬性是舊標題
■■SHDocVwCtl.WebBrowser_V1 物件==================
在窗體宣告部分加入:Private WithEvents Web_V1 As SHDocVwCtl.WebBrowser_V1
在 Form_Load 加入:Set Web_V1 = Web1.Object
這樣,Web_V1 就會有如下事件:
▲NewWindow 彈出新視窗以前觸發
如果在 Web1_NewWindow2 設定了 ppDisp 為新顯示物件,就不會出現此事件
★例子1,用自己開發的程式的新視窗顯示彈出網頁:
Dim nForm As New FormMain 'FormMain 為你的放有 Web1 控制元件的窗體
Processed = True '阻止控制元件呼叫 IE 彈出視窗
nForm.Show
nForm.Web1.Navigate URL
★例子2,在同一視窗顯示網頁:
Processed = True '阻止控制元件呼叫 IE 彈出視窗
Web1.Navigate URL
■■■■■■■■■■■■■■■■■■■■■■■■
■■Web1.Document 物件(HTMLDocument 物件)=======================
▲All(1)集合,已載入到 Web1 中的 html 文件包含的所有標籤物件:HTMLAreaElement
集合物件索引起點為0,總個數為 All.length
可以用索引訪問其中物件,如:All(1)
也可以用 Html 頭元素名稱訪問物件,如:All("body")
All(0) 一般是自身的 outerHTML,可以這樣返回文件程式碼(檢視原始檔):
Text1.Text = Web1.Document.All(0).outerhtml
但上一條語句並不可靠,有的網頁開頭的程式碼不是,而是其他,例如:<!--STATUS OK--&gt
All()集合有 HTMLAreaElement 物件的大多數屬性,有的元素還有特有的屬性。
注意 某元素的 sourceIndex 屬性就是該物件在 Document.All() 集合中的編號
▲body 主體元素物件:IHTMLElement
▲activeElement 活動元素:IHTMLElement
▲anchors 錨集合:IHTMLElementCollection
▲appendChild 方法:附加子物件(newChild As IHTMLDOMNode) As IHTMLDOMNode
▲applets 程式集合Java:IHTMLElementCollection
▲attachEvent 方法:隸屬事件(event As String, pdisp As object) As Boolean
▲attributes 屬性物件:object
▲bgColor 背景色:Variant
▲childNodes 子節點:object
▲clear 方法:清除
▲cloneNode 方法:複製節點(fDeep As Boolean) As IHTMLDOMNode
▲close 方法:關閉
▲compatMode
▲cookie 快取
▲createAttribute 方法:建立屬性(bstrattrName As String) As IHTMLDOMAttribute
▲createComment 方法:建立註釋(bstrdata As String) As IHTMLDOMNode
▲createDocumentFragment 方法:建立文件片段() As IHTMLDocument2
▲createDocumentFromUrl 方法:從URL建立文件(bstrUrl As String, bstrOptions As String) As IHTMLDocument2
▲createElement 方法:建立元素(eTag As String) As IHTMLElement
▲CreateEventObject 方法:建立事件物件([pvarEventObject]) As IHTMLEventObj
▲createRenderStyle 方法:(v As String) As IHTMLRenderStyle
▲createStyleSheet 方法:建立方式表([bstrHref As String], [lIndex As Long = -1]) As IHTMLStyleSheet
▲createTextNode 方法:建立文字節點(text As String) As IHTMLDOMNode
▲defaultCharset 預設字符集?
▲detachEvent 方法:分離事件(event As String, pdisp As object)
▲dir
▲doctype 文件型別:IHTMLDOMNode
▲documentElement 文件元素:IHTMLElement
▲domain
▲elementFromPoint 方法:點所屬組(x As Long, y As Long) As IHTMLElement
▲embeds :IHTMLElementCollection
▲execCommand 方法:實行命令(cmdID As String, [showUI As Boolean = False], [value]) As Boolean
▲execCommandShowHelp 方法:幫助命令(cmdID As String) As Boolean
▲fgColor 前景色:Variant
▲fileCreatedDate 檔案建立日期
▲file Modified Date 檔案修改日期
▲fileSize 檔案大小
▲fileUpdatedDate 檔案更新日期
▲FireEvent 方法:首事件(bstrEventName As String, [pvarEventObject]) As Boolean
▲firstChild 首子物件:IHTMLDOMNode
▲focus 方法:
▲forms 窗體:IHTMLElementCollection
▲frames 框架結構:FramesCollection
▲getElementById 方法:獲取指定的 ID 元素(v As String) As IHTMLElement
▲getElementsByName 方法:獲取指定的 Name 元素集合(v As String) As IHTMLElementCollection
▲getElementsByTagName 方法:獲取指定的 TagName 元素集合(v As String) As IHTMLElementCollection
▲hasChildNodes 方法:
▲hasFocus 方法:() As Boolean
▲images 影像集合:IHTMLElementCollection

▲implementation 執行:IHTMLDOMImplementation
▲insertBefore 方法:插入前面(newChild As IHTMLDOMNode, [refChild]) As IHTMLDOMNode
▲lastChild
▲lastModified 上一修改
▲linkColor 連結色
▲alinkColor A 連結色:
▲vlinkColor V 連結色:
▲links 連線集合:IHTMLElementCollection
▲location 位置:HTMLLocation
▲media 媒體
▲mimeType
▲nameProp
▲namespaces 名稱空間:object
▲nextSibling 下一相同物件
▲nodeName
▲nodeType
▲nodeValue
▲open 方法:開啟([url As String = "text/html"], [name], [features], [replace]) As object
▲ownerDocument 所有者文件:object
▲parentNode 父節點:IHTMLDOMNode
▲parentWindow 父視窗:IHTMLWindow2
▲plugins 外掛集合?:IHTMLElementCollection
▲previousSibling 前一兄弟:IHTMLDOMNode
▲protocol 協議
▲queryCommandEnabled 方法:查詢命令能否執行(cmdID As String) As Boolean
▲queryCommandIndeterm 方法:查詢命令? (cmdID As String) As Boolean
▲queryCommandState 方法:查詢命令狀態(cmdID As String) As Boolean
▲queryCommandSupported 方法:查詢命令支援(cmdID As String) As String
▲queryCommandText 方法:查詢命令文字(cmdID As String) As Boolean
▲queryCommandValue 方法:查詢命令值 (cmdID As String)
▲readyState
▲recalc 方法:([fForce As Boolean = False])
▲referrer
▲releaseCapture 方法:
▲removeChild 方法:
▲removeNode 方法:
▲replaceChild 方法:
▲replaceNode 方法:替換節點(replacement As IHTMLDOMNode) As IHTMLDOMNode
▲scripts script集合:IHTMLElementCollection
▲security 安全:String
▲selection 已選擇的物件集合:IHTMLSelectionObject
▲styleSheets 方式表單:HTMLStyleSheetsCollection
▲swapNode 方法:交換節點(otherNode As IHTMLDOMNode) As IHTMLDOMNode
▲title
▲toString 方法:
▲url
▲URLUnencoded
▲write 方法:(ParamArray psarray() As Variant)
▲writeln 方法:(ParamArray psarray() As Variant)
▲onstop 既是屬性,又是事件
▲共有屬性和事件
■■ 共有屬性和事件:既是屬性,又是事件。面帶 on 的=======================
▲onactivate onActivate 啟用
▲onafterupdate onAfterUpdate 更新後
▲onbeforeactivate onBeforeActivate 啟用前
▲onbeforecopy onBeforeCopy 複製前
▲onbeforecut onBeforeCut 剪下前
▲onbeforedeactivate onBeforeDeactivate 無效前
▲onbeforeeditfocus onBeforeEditFocus 獲得編輯焦點前
▲onbeforepaste onBeforePaste 貼上前
▲onbeforeupdate onBeforeUpdate 更新前
▲onblur onBlur 模糊
▲oncellchange onCellChange 單元改變
▲onclick onClick 單擊
▲oncontextmenu onContextMenu 上下文選單
▲oncontrolselect onControlSelect 控制元件選定
▲oncopy onCopy 複製
▲oncut onCut 剪下
▲ondataavailable onDataAvailable 有用資料
▲ondatasetchanged onDataSetChanged 資料設定改變
▲ondatasetcomplete onDataSetComplete 資料設定完成
▲ondblclick onDblClick 雙擊
▲ondeactivate onDeactivate 變為非活動
▲ondrag onDrag 拖
▲ondragend onDragEnd 拖結束
▲ondragenter onDragEnter 拖進
▲ondragleave onDragLeave 拖離
▲ondragover onDragOver 拖過
▲ondragstart onDragStart 拖開始
▲ondrop onDrop
▲onerrorupdate onErrorUpdate 更新錯誤
▲onfilterchange onFilterChange 過濾器改變
▲onfocus onFocus
▲onfocusin onFocusIn 焦點進入
▲onfocusout onFocusOut 焦點離開
▲onhelp onHelp
▲onkeydown onKeyDown
▲onkeypress onKeyPress
▲onkeyup onKeyUp
▲onlayoutcomplete onLayoutComplete 版面完成
▲onlosecapture onLoseCapture 失去捕獲
▲onmousedown onMouseDown
▲onmouseenter onMouseEnter
▲onmouseleave onMouseLeave
▲onmousemove onMouseMove
▲onmouseout onMouseOut
▲onmouseover onMouseOver
▲onmouseup onMouseUp
▲onmousewheel onMouseWheel 滑鼠滾輪
▲onmove onMove
▲onmoveend onMoveEnd
▲onmovestart onMoveStart
▲onpage onPage
▲onpaste onPaste 貼上
▲onpropertychange onPropertyChange 性質改變
▲onreadystatechange onSeadyStateChange 準備狀態改變
▲onresize onResize
▲onresizeend onResizeEnd
▲onresizestart onResizeStart
▲onrowenter onRowEnter 行進入
▲onrowexit onRowExit
▲onrowsdelete onRowsDelete
▲onrowsinserted onRowsInserted
▲onscroll onScroll
▲onselectstart onSelectStart
-------
■■HTMLDivElement 物件:div 元素特有的屬性=======================
▲align 排列:String
▲dataFld 資料流體:String
▲dataFormatAs 資料格式:String
▲dataSrc 資料Src:String
▲noWrap
■■HTMLAreaElement 物件:區域元素 大多數元素共有的屬性=======================
一個 HTMLAreaElement 可以包含多個 HTMLAreaElement 物件,用 all() 集合訪問
▲sourceIndex 物件在 Document.All() 集合中的編號
▲accessKey String:訪問鍵
▲addBehavior 方法:新增行為(bstrUrl As String, [pvarFactory]) As Long
▲addFilter 方法:新增過濾器(pUnk As Unknown)
▲all 【參 HTMLAreaElement】
▲alt
▲appendChild 【參 HTMLAreaElement】
▲applyElement 方法:申請元素(apply As IHTMLElement, where As String) As IHTMLElement
▲attachEvent 方法:隸屬事件(event As String, pdisp As object) As Boolean
▲attributes 【參 HTMLAreaElement】
▲behaviorUrns 行為缸物件:object
▲blur 方法:模糊
▲canHaveChildren 是否能擁有子物件
▲canHaveHTML 是否能擁有HTML
▲childNodes 子節點:object
▲children 是否子物件
▲className 類名
▲clearAttributes 方法:清除屬性
▲click 方法:單擊
▲clientHeight 內部高度?
▲clientLeft
▲clientTop
▲clientWidth
▲cloneNode 方法:克隆節點(fDeep As Boolean) As IHTMLDOMNode
▲componentFromPoint 方法:點所屬組(x As Long, y As Long) As String
▲contains 方法:包含contains(pChild As IHTMLElement) As Boolean
▲contentEditable
▲coords
▲createControlRange 方法:建立控制山脈(行列)() As object
▲currentStyle 當前樣式:IHTMLCurrentStyle
▲detachEvent 方法:分離事件(event As String, pdisp As object)
▲dir
▲disabled 不可用
▲document 文件物件:object
▲doScroll 方法([component])
▲dragDrop 方法:拖放
▲filters 過濾器: IHTMLFiltersCollection
▲FireEvent 方法FireEvent(bstrEventName As String, [pvarEventObject]) As Boolean
▲firstChild 首子物件:IHTMLDOMNode
▲focus 方法
▲getAdjacentText 方法:獲取臨近文字(where As String) As String
▲getAttribute 方法:獲取屬性(strAttributeName As String, [lFlags As Long])
▲getAttributeNode 方法:獲取屬性節點(bstrName As String) As IHTMLDOMAttribute
▲getBoundingClientRect 方法:獲取內部範圍矩形() As IHTMLRect
▲getClientRects 方法:獲取委託矩形() As IHTMLRectCollection
▲getElementsByTagName 【參 HTMLAreaElement】
▲getExpression 方法:獲取表達(propname As String)
▲hasChildNodes 【參 HTMLAreaElement】
▲hash 無用資訊
▲hideFocus
▲host 主人
▲hostname 主人名稱
▲href 預設屬性
▲id 標示字串
▲innerHTML 元素內的 html 程式碼
▲innerText 內部的純文字,可以顯示到網頁上的文字
▲insertAdjacentElement 方法:插入臨近元素(where As String, insertedElement As IHTMLElement) As IHTMLElement
▲insertAdjacentHTML 方法:(where As String, html As String)
▲insertAdjacentText 方法:(where As String, text As String)
▲insertBefore 方法:(newChild As IHTMLDOMNode, [refChild]) As IHTMLDOMNode
▲isContentEditable
▲isDisabled
▲isMultiLine
▲isTextEdit
▲lang
▲language
▲lastChild
▲mergeAttributes 方法:合併屬性(mergeThis As IHTMLElement, [pvarFlags])
▲nextSibling 下一同級物件
▲nodeName
▲nodeType
▲nodeValue
▲noHref
▲normalize 方法:規格化
▲offsetHeight 偏移(縮排)高度
▲offsetLeft
▲offsetParent
▲offsetTop
▲offsetWidth

▲outerHTML 包含元素本身及內部的 html 程式碼
▲outerText
▲ownerDocument
▲parentElement
▲parentNode
▲parentTextEdit
▲pathname
▲port
▲previousSibling
▲protocol
▲readyState
▲recordNumber
▲releaseCapture 方法:釋放捕獲
▲removeAttribute 方法:移除屬性
▲removeAttributeNode 方法
▲removeBehavior 方法:移除行為
▲removeChild 方法
▲removeExpression 方法
▲removeFilter 方法
▲removeNode 方法
▲replaceAdjacentText 方法:替換臨近文字
▲replaceChild 方法
▲replaceNode 方法
▲runtimeStyle 執行方式:IHTMLStyle
▲scopeName 範圍名稱
▲scrollHeight
▲scrollIntoView 方法
▲scrollLeft
▲scrollTop
▲scrollWidth
▲search
▲setActive 方法
▲setAttribute 方法
▲setAttributeNode 方法
▲setCapture 方法
▲setExpression 方法
▲shape
▲style
▲swapNode 方法:交換節點
▲tabIndex
▲tagName 標籤名
▲tagUrn 標籤缸
▲target 目標
▲title
▲toString
■■Web1 應用例子
▲在網頁加裁完畢後,執行其中某層的連結,當然事先必須知道該層連結的TagName:
WebBrowser1.Document.getElementsByname("TagName").click。

[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/16396910/viewspace-1032254/,如需轉載,請註明出處,否則將追究法律責任。

相關文章