WPF中Frame和WebBrowser關係

2021-07-11 07:50:22 字數 1334 閱讀 3086

**:

例如,使用frame的loaded或loadcompleted方法時,會發現,網頁還沒載入完成這些事件就執行了。loaded甚至是一開始就立刻執行了,loadcompleted是在剛開始載入網頁就執行的。

為什麼會這樣,似乎和frame的這兩個事件的描述不一樣,但是在導航page(xaml)時就沒問題。

詳細閱讀一下方法的說明和之前講的frame和webbrowser的關係,其實可以找出答案。

還是以loaded事件和loadcompleted事件為例。

loaded事件幾乎在所有控制項中都有,因此,frame的loaded方法和其他控制項的loaded是一樣的,控制項載入完成就觸發。

loadcompleted,這個物件是frame內容載入完畢時觸發的,看上去好像可以用這個方法來判斷網頁是否載入完畢,但是實際上依然不可以,為什麼呢?如果frame載入的是page(xaml),那麼這個事件是管用的,但是,載入的是網頁時,我們前面說過,frame並沒有直接載入網頁,而是通過建立乙個webbrowser,然後這個webbrowser再去載入網頁,因此,frame訪問網頁時,loadcompleted是建立webbrowser完成,而不是網頁載入完成。

那麼如何判斷frame中的網頁是否載入完成呢?既然frame並沒自己載入網頁,而是載入乙個webbrowser,然後由webbrowser來載入網頁,因此,我們要判斷frame中網頁是否載入完成,其實依然是通過webbrowser中的方法和事件來處理。這一點實際上又變回以前winform的操作方法了。

因此,我們在使用frame來載入網頁並與之互動時,需要記住,中間還有個webbrowser,frame只是建立乙個webbrowser,然後webbrowser完成工作。frame的loaded只是自己完成時就觸發,loadcompleted事件是指webbrowser例項化完成,網頁載入完成是觸發的webbrowser的loadcompleted。其他情況也遵循此原理。

還有乙個地方要注意,在frame觸發loadcompleted之前,frame是還沒有完成webbrowser的建立的,因此,要想操作webbrowser必須在loadcompleted之後,否則會未例項化異常。

不要把wpf的frame當做網頁中的frame來用了。

操作網頁上的內容 :

webbrowser wb = (webbrowser)geoserverfrm.content;

mshtml.htmldocument document = (mshtml.htmldocument)wb.document;

document.getelementbyid("test").setattribute("value", "修改後內容", 0);

document.focus();  

JSP中frameset和frame的使用

例 框架概念 所謂框架便是網頁畫面分成幾個框窗,同時取得多個 url。只需要 即可,面所有框架標記需要放在乙個總起的 html 檔,這個檔案只記錄了該框架如何分割 不會顯示任何資料,所以不必放入 標記,瀏覽這框架必須讀取這檔案 面不是其他框窗的檔案。是用來劃分框窗,每一窗框由乙個 標記所標示,必須在...

iOS開發 View中frame和bounds區別

開發中調整view的時候的經常會遇到frame和bounds,剛開始看的時候不是很清楚,不過看了一下官方文件,frame是確定檢視在父檢視中的位置,和本身的大小,bounds確定可以確定子檢視在當前檢視中的位置,還可以改變view的大小,如果bounds確定大小,那麼view的檢視優先選擇的boun...

iOS開發 View中frame和bounds區別

開發中調整view的時候的經常會遇到frame和bounds,剛開始看的時候不是很清楚,不過看了一下官方文件,frame是確定檢視在父檢視中的位置,和本身的大小,bounds確定可以確定子檢視在當前檢視中的位置,還可以改變view的大小,如果bounds確定大小,那麼view的檢視優先選擇的boun...