先上技術内容,後面再感慨幾句:
在圖檔的右側,是一個WebBrowser 控件,用來顯示新浪微網誌的内容給使用者評論,然則卻遇到不少問題。
直接顯示Html内容,不像直接導航網址容易處理:
問題:按微軟的控件屬性提示,可以用WebBrowser.DocumentText 屬性指派 ,但是這種指派,隻是首次有效,後續切換都沒啥作用。
為決定這個問題,自己花了點時間研究與摸索。
下面給出自己追求摸索的兩點技巧:
1:通過WebBrowser.Document.Write(html)方法來輸出html内容顯示。
由于WebBrowser 需要經曆幾個事件後才會顯示,直接輸出是不行的,為此,需要有點技巧的使用:
wbShowBlog.Navigate("about:blank");
while (wbShowBlog.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
wbShowBlog.Document.Write(html)
先導航到空白頁,再輸出需要顯示的Html内容,用這個方法解決。
2:二次顯示内容,應該用節點替換,而不是重新輸出内容
一開始都調用輸出顯示,結果切換内容時,偶爾會出現切換後不顯示新内容的問題。
在多次反複的試驗中,反反複複,時好時壞之後,決定想法處理掉這個問題,為此,本人又想到另一種解決的方式:
if (wbShowBlog.Document == null)
string html = htmlTemplate.Replace("{0}", blogText);
wbShowBlog.Navigate("about:blank");
while (wbShowBlog.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
wbShowBlog.Document.Write(html);//這裡有問題,明天處理。
else
wbShowBlog.Document.GetElementById("weibospiritBody").InnerHtml = blogText;
第二次時,通過直接切換内部某節點的InnerHtml來顯示内容,而不是重新對浏覽器指派,通過這個方式,完美的解決了這個問題。
3:Document.Write(html) 帶iframe時,解決iframe預設不顯示的神秘問題
終于,直到某天,新的政策變化,内容下方的廣告,不是直接顯示内容,而且想套一個iframe來顯示網頁位址,這時候又發現新問題:
通過Document.Write出來的iframe竟然顯示不出來,折騰過後,發現重新整理一下浏覽器可以顯示出來,為此,又補上一招,變成:
if (wbShowBlog.Document == null)
string html = htmlTemplate.Replace("{0}", blogText);
wbShowBlog.Navigate("about:blank");
while (wbShowBlog.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
wbShowBlog.Document.Write(html);//這裡有問題,明天處理。
wbShowBlog.Refresh();//不重新整理一下,Iframe顯示不出來。
wbShowBlog.Document.GetElementById("weibospiritBody").InnerHtml = blogText;
就是多一行重新整理,解決了這個問題,以上就是3個細節點。
下面感慨幾句:
現在很少寫技術文章了,曾經天天寫着文章,如今一個月才寫一篇一小而短的文章,憶往昔,往事不堪回首了!
本文轉自cyq1162 51CTO部落格,原文連結:http://blog.51cto.com/cyq1162/823304,如需轉載請自行聯系原作者