全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2166
推到 Plurk!
推到 Facebook!

請教一下關於WebBrowser

答題得分者是:pwipwi
ddtddt55
一般會員


發表:7
回覆:3
積分:2
註冊:2004-05-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-21 03:42:21 IP:218.162.xxx.xxx 未訂閱
最近因為要寫專題的關係,會常常碰到這個元件,因此產生許多疑問,麻煩各位高手們給些建議,謝謝。 我在使用CppWebBrowser物件時,我想先將網頁下載完畢後,在交給IHTMLDocument2物件去處理,但我執行了卻發現我的BCB根本沒畫面 在表單初始化時 WebBrowser->Navigate(WideString("http://news.pchome.com.tw")); while(WebBrowser->ReadyState!=Shdocvw_tlb::READYSTATE_COMPLETE) { Application->ProcessMessages(); } 但我只要改一下while的條件式,就能執行了 WebBrowser->Navigate(WideString("http://news.pchome.com.tw")); while(!WebBrowser->Document) { Application->ProcessMessages(); } 雖然現在可以了,但我還是想知道第一種方式為什麼不可以?
pwipwi
版主


發表:68
回覆:629
積分:349
註冊:2004-04-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-22 22:34:42 IP:211.76.xxx.xxx 未訂閱
引言: 最近因為要寫專題的關係,會常常碰到這個元件,因此產生許多疑問,麻煩各位高手們給些建議,謝謝。 我在使用CppWebBrowser物件時,我想先將網頁下載完畢後,在交給IHTMLDocument2物件去處理,但我執行了卻發現我的BCB根本沒畫面 在表單初始化時 WebBrowser->Navigate(WideString("http://news.pchome.com.tw")); while(WebBrowser->ReadyState!=Shdocvw_tlb::READYSTATE_COMPLETE) { Application->ProcessMessages(); } 但我只要改一下while的條件式,就能執行了 WebBrowser->Navigate(WideString("http://news.pchome.com.tw")); while(!WebBrowser->Document) { Application->ProcessMessages(); } 雖然現在可以了,但我還是想知道第一種方式為什麼不可以?
ddtddt55你好 READYSTATE_COMPLETE的意義是所有網頁中的內容都讀完而且script也結束時才會出現的。但是在ReadyState變成COMPLETE之前document就有東西了。很像我們開ie時,雖然已經有畫面,但是不代表這個網頁已經處理結束。 而且常常TCppWebBrowser在執行javascript上會出錯誤而卡住,因此要等很久ReadyState才會變COMPELETE。因此造成你第一個例子中,可能因等待過久而一直沒結果。後者雖然document有東西了,可是不代表就是完整的,也是需要小心的。很容易就只抓到頭而已。
jeff377
初階會員


發表:9
回覆:60
積分:33
註冊:2004-08-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-09-27 15:19:14 IP:61.56.xxx.xxx 未訂閱
當網頁完整下載後,會引發OnDocumentComplete事件,直接在此事件中處理即可。
系統時間:2024-05-15 13:17:52
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!