分享 WebBrowser显示Html内容3点细节技巧,解决刷新后空白

直接显示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个细节点。

分享自:http://www.cnblogs.com/cyq1162/archive/2012/03/27/2419655.html

分享 WebBrowser显示Html内容3点细节技巧,解决刷新后空白

时间: 2024-10-26 20:48:43

分享 WebBrowser显示Html内容3点细节技巧,解决刷新后空白的相关文章

C# Winform 中webBrowser显示html内容时禁止错误提示的方法

在winform中有一个控件可以显示html的内容,该控件就是webbrowser,设置它的DocumenText属性为HTML的内容即可. 在使用WebBrowser做UI的时候,我们有时不希望里面的链接被用户点击,更不希望弹出烦人的脚本错误提示框,也不希望用户能点出右键的IE菜单,要做到这些,其实都是很easy地… //设置webBrowser webBrowser1.ScriptErrorsSuppressed = true; //禁用错误脚本提示 webBrowser1.IsWebBro

EditTextPreference点击后输入框显示隐藏内容,类似密码输入(转)

http://bbs.anzhuo.cn/thread-928131-1-1.html EditTextPreference点击后输入框显示隐藏内容,类似密码输入... [复制链接]     askilledhand ADD.幼儿园 UID 2186431 帖子 46 精华 0 积分 34 最后登录 2014-3-5 串个门 加好友 打招呼 发消息 电梯直达 1楼  发表于 2013-11-18 11:59:03 |只看该作者 |倒序浏览  一键分享 [新人报到]现在去发帖报道即可领取论坛金币哦

C语言探索之旅】 第一部分第四课第三章:变量的世界之显示变量内容

内容简介 1.课程大纲 2.第一部分第四课第三章:变量的世界之显示变量内容 3.第一部分第五课预告:基本运算 课程大纲 我们的课程分为四大部分,每一个部分结束后都会有练习题,并会公布答案.还会带大家用C语言编写三个游戏. C语言编程基础知识 什么是编程? 工欲善其事,必先利其器 你的第一个程序 变量的世界 基本运算 条件表达式 循环语句 实战:第一个C语言小游戏 函数 练习题 习作:完善第一个C语言小游戏 C语言高级技术 模块化编程 进击的指针,C语言王牌 数组 字符串 预处理 创建你自己的变量

微信分享修改分享的标题,内容等

<script> //微信分享 var wimg = "分享图片网址123"; var wurl = "分享网址123"; var wdesc = '分享内容123'; var wtit = '分享标题123'; var wappid = ''; function shareMsg() {//<span style="font-family: Arial, Helvetica, sans-serif;">发送给好友<

[转]PHP高手干货分享:不能不看的50个细节!

转载请注明来源:PHP高手干货分享:不能不看的50个细节!http://www.php1.cn/Content/PHP_GaoShouGanHuoFenXiang_-_BuNengBuKanDe_50_GeXiJie.html 1.用单引号代替双引号来包含字符串,这样做会更快一些.因为PHP会在双引号包围的字符串中搜寻变量, 单引号则不会,注意:只有echo能这么做,它是一种可以把多个字符串当作参数的”函数”(译注:PHP手册中说echo是语言结构,不是真正的函数,故把函数加上了双引号). 2.

ext4js 主页面布局,动态分配菜单,并点击url 显示到内容面板中

这里没用到数据库,先用js模仿,看起来方便点, 在网上看视频,他奶奶的,都是比较低版本的,一样的代码,就是报错,一查API,内库不一样,害死个人. 高版本的还找老子收费,这年头.还是得靠自已研究,终于搞出来了个简单的,分享下..... <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html

重新想象 Windows 8.1 Store Apps (81) - 控件增强: 加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图

原文:重新想象 Windows 8.1 Store Apps (81) - 控件增强: 加载本地 html, 智能替换 html 中的 url 引用, 通过 Share Contract 分享 WebView 中的内容, 为 WebView 截图 [源码下载] 作者:webabcd 介绍重新想象 Windows 8.1 Store Apps 之控件增强 WebView 加载本地 html,智能替换 html 中的 url 引用 WebView 通过 Share Contract 分享 WebVi

微信二次分享不显示摘要和图片的解决方法

微信二次分享不显示摘要和图片的解决方法 解决不显示摘要和图片的问题,需要调用微信公众号的js-sdk的api ,需要前端和后台的配合, 后台需要返回 appid (公众号的appid ) . timestamp (生成签名的时间戳) .nonceStr (签名的随机字符串) . signature (签名* 可能出错): 1.绑定域名 先登录微信公众平台进入"公众号设置"的"功能设置"里填写"js接口安全域名".(特别提示不需要加上http或者h

Vue.js 移入mouseenter显示当前内容

样式比较丑,勿喷! 鼠标移到第二个,左边背景就显示当前内容. 鼠标移到第三个,左边背景就显示当前内容. 如下图: window.vue   组件:就是要显示内容的组件. <style scoped> div{ /*width: 100px;*/ height: 20px; background-color: #138a97; color:#fff; /*子绝父相定位*/ position: absolute; bottom:0; left:20px; } </style> <