WebBrowser 显示Html内容3点细节技巧
2012-03-27 22:47
253 查看
先上技术内容,后面再感慨几句:
早在(新浪)微博粉丝精灵的评论平台(现在移到微博人气精灵)里,需要有空间来显示新浪微博的内容,如下图:
在图片的右侧,是一个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显示不出来。
}
else
{
wbShowBlog.Document.GetElementById("weibospiritBody").InnerHtml = blogText;
}
复制代码
就是多一行刷新,解决了这个问题,以上就是3个细节点。
下面感慨几句:
现在很少写技术文章了,曾经天天写着文章,如今一个月才写一篇一小而短的文章,忆往昔,往事不堪回首了!
从离职到私奔出来自己折腾,快近一年了,从折腾秋色园、CYQ.Data 数据框架、CYQ.DBImport(数据库互导工具)、CYQ.IISLogViewer(IIS日志分析工具)
到现在转战新浪微博粉丝精灵,一直在忙碌,基本都在一线开发,战线似乎拉的点长,有些都顾不上更新版本了,要做的事太多了,所以没以前那会那么闲了,可以天天写文章。
偶尔会发一发微博,有闲可以关注下我的新浪微博:http://weibo.com/cyqdata
早在(新浪)微博粉丝精灵的评论平台(现在移到微博人气精灵)里,需要有空间来显示新浪微博的内容,如下图:
在图片的右侧,是一个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显示不出来。
}
else
{
wbShowBlog.Document.GetElementById("weibospiritBody").InnerHtml = blogText;
}
复制代码
就是多一行刷新,解决了这个问题,以上就是3个细节点。
下面感慨几句:
现在很少写技术文章了,曾经天天写着文章,如今一个月才写一篇一小而短的文章,忆往昔,往事不堪回首了!
从离职到私奔出来自己折腾,快近一年了,从折腾秋色园、CYQ.Data 数据框架、CYQ.DBImport(数据库互导工具)、CYQ.IISLogViewer(IIS日志分析工具)
到现在转战新浪微博粉丝精灵,一直在忙碌,基本都在一线开发,战线似乎拉的点长,有些都顾不上更新版本了,要做的事太多了,所以没以前那会那么闲了,可以天天写文章。
偶尔会发一发微博,有闲可以关注下我的新浪微博:http://weibo.com/cyqdata
相关文章推荐
- 分享 WebBrowser显示Html内容3点细节技巧,解决刷新后空白
- 分享 WebBrowser显示Html内容3点细节技巧,解决刷新后空白
- WebBrowser 显示Html内容3点细节技巧
- WebBrowser 显示Html内容3点细节技巧
- WebBrowser 显示Html内容不得不知的技巧
- Delphi - WebBrowser载入自定义HTML内容并显示
- JSP显示内容缓存技巧
- 关于txt文本的内容与html页面上显示的内容格式一致的问题
- 在Html中当内容溢出时只显示垂直滚动条
- 在WebView上正确显示HTML内容
- 求助:我想在一个HTML页面里根据一个select的内容来判断是否显示一个输入框,应该怎么做?新人,急!
- html显示数据库中的字段内容为sql语句时,出现隐藏了换行等字符的问题解决
- 在Myeclipse中修改了HTML、CSS或JavaScript语句,但是浏览器刷新并清空缓存后依然不显示新内容
- jQuery在异步请求数据返回后,调用$("selector").html(data.content);之后因为一些特殊字符或者',"不能显示内容的问题解决办法
- struts2标签遍历时,显示内容忽略<html>代码问题
- 解决html表格中内容超出不强制换行和超出宽度自动隐藏并显示省略号
- iOS怎么显示html父文本上的内容
- iphone开发之使用UIWebView显示html内容
- WPF:WebBrowser提示 为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容
- HTML---灵活高效的在 Android Native App 开发中显示 HTML 内容