mfc webbrowser判斷網頁載入完成
阿新 • • 發佈:2018-12-21
mfc 的webbrowser是大家使用非常多的一種檢視操作網頁的一種控制元件,在使用中,判斷網頁什麼時候載入完成就顯得非常重要了。下面介紹我採用的一種方法,這種方法可以判斷網頁內部即使有frame網頁也是可以判斷成功。
在對話方塊裡新增一個webbrowser控制元件,在對話方塊的初始化函式OnInitDialog()中加入web控制元件預設載入的網頁。
//禁用IE指令碼錯誤
m_web.put_Silent(TRUE);
//預設開啟百度網頁
m_web.Navigate(L"https://www.baidu.com/", NULL, NULL, NULL, NULL);
新增一個全域性變數:
//全域性變數的定義
LPDISPATCH glpDisp = NULL;
接下來為webbrowser控制元件新增NavigateComplete2Explorer1訊息
在NavigateComplete2Explorer1的訊息響應函式中新增下面程式碼:
void CMFCTestDlg::NavigateComplete2Explorer1(LPDISPATCH pDisp, VARIANT* URL)
{
// TODO: 在此處新增訊息處理程式程式碼
glpDisp = pDisp;
}
接下來為webbrowser控制元件新增DocumentCompleteExplorer1訊息響應
在DocumentCompleteExplorer1訊息響應函式中判斷網頁是否載入完成
程式碼如下:
//獲取網址
CString strUrl = URL->bstrVal;
if (pDisp == glpDisp)
{
//根據網址判斷網頁是否載入完成
if (strUrl == L"https://www.baidu.com/")
{
MessageBox(L"網頁載入完成!");
}
}
在這裡說一下判斷網頁載入完成的原理,DocumentComplete雖然字面意義是網頁載入完成後觸發的訊息響應,但是對於網頁內部包含有子框架網頁時,這種方式就不行了。因為frame裡的網頁載入完成,也會觸發這個訊息響應,因此結合網頁載入完成後網址是不變的來判斷網頁是否載入完成。
執行效果如下圖: