先上技術內容,后面再感慨幾句:
早在(新浪)微博粉絲精靈的評論平台(現在移到微博人氣精靈)里,需要有空間來顯示新浪微博的內容,如下圖:
在圖片的右側,是一個WebBrowser 控件,用來顯示新浪微博的內容給用戶評論,然則卻遇到不少問題。
直接顯示Html內容,不像直接導航網址容易處理:
問題:按微軟的控件屬性提示,可以用WebBrowser.DocumentText 屬性賦值 ,但是這種賦值,只是首次有效,后續切換都沒啥作用。
為決定這個問題,自己花了點時間研究與摸索。
下面給出自己追求摸索的兩點技巧:
1:通過WebBrowser.Document.Write(html)方法來輸出html內容顯示。
while (wbShowBlog.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
wbShowBlog.Document.Write(html)
先導航到空白頁,再輸出需要顯示的Html內容,用這個方法解決。
2:二次顯示內容,應該用節點替換,而不是重新輸出內容
一開始都調用輸出顯示,結果切換內容時,偶爾會出現切換后不顯示新內容的問題。
在多次反復的試驗中,反反復復,時好時壞之后,決定想法處理掉這個問題,為此,本人又想到另一種解決的方式:
{
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竟然顯示不出來,折騰過后,發現刷新一下瀏覽器可以顯示出來,為此,又補上一招,變成:
{
string html = htmlTemplate.Replace("{0}", blogText);
wbShowBlog.Navigate("about:blank");
while (wbShowBlog.ReadyState != WebBrowserReadyState.Complete)
{
Application.DoEvents();
}
wbShowBlog.Document.Write(html);//這里有問題,明天處理。
wbShowBlog.Refresh();//不刷新一下,Iframe顯示不出來。
}
else
{
wbShowBlog.Document.GetElementById("weibospiritBody").InnerHtml = blogText;
}
就是多一行刷新,解決了這個問題,以上就是3個細節點。
下面感慨幾句:
現在很少寫技術文章了,曾經天天寫着文章,如今一個月才寫一篇一小而短的文章,憶往昔,往事不堪回首了!
從離職到私奔出來自己折騰,快近一年了,從折騰秋色園、CYQ.Data 數據框架、CYQ.DBImport(數據庫互導工具)、CYQ.IISLogViewer(IIS日志分析工具)
到現在轉戰新浪微博粉絲精靈,一直在忙碌,基本都在一線開發,戰線似乎拉的點長,有些都顧不上更新版本了,要做的事太多了,所以沒以前那會那么閑了,可以天天寫文章。
偶爾會發一發微博,有閑可以關注下我的新浪微博:http://weibo.com/cyqdata