winform关于webBrowser控件使用的问题

RedLaugh 2014-06-19 05:13:16

用webBrowser控件套了一个a页面(a页面是外网一个页面),当点击开始按钮的时候,会触发页面“更多”事件(此事件为Ajax请求),页面会加载最新数据,当加载完最新数据后把webBrowser1.DocumentStream流写入到我本地磁盘一个b页面,然后去浏览b页面内容,但b页面内容是a页面第一次加载的内容,并没有获取到“点击更多”后最新数据内容。把webBrowser1.DocumentStream流写入html文件的代码如下:

Encoding encoding = Encoding.GetEncoding(webBrowser1.Document.Encoding);
string path = "c:\\b.html";
StreamReader sr = new StreamReader(webBrowser1.DocumentStream, encoding);
StreamWriter sw = new StreamWriter(path);
sw.Write(sr.ReadToEnd());
sw.Flush();
sw.Close();
sr.Close();



byte[] _HtmlByte = new byte[webBrowser1.Document.Body.OuterHtml.Length];
webBrowser1.DocumentStream.Position = 0;
webBrowser1.DocumentStream.Read(_HtmlByte, 0, _HtmlByte.Length);
FileStream _FileStream = new FileStream(@"C:\b.html", System.IO.FileMode.Create);
_FileStream.Write(_HtmlByte, 0, _HtmlByte.Length);
_FileStream.Close();

注:以上两种方式只能获取到webBrowser1第一次加载的内容

然后尝试用File.WriteAllText(@"C:\b.html", webBrowser1.Document.Body.OuterHtml, Encoding.Unicode)这种方式,这种方式虽然获取到了webBrowser最新内容(也就是a页面最新内容),但页面显示样式是错乱的,图片也看不见(webBrowser1.Document.Body.OuterHtml获取的只是一个string字符串,而不是流的方式;如果以webBrowser1.DocumentStream流的方式写入,浏览本地磁盘页面样式是完整的,图片也能看见)。

本人想以流的方式写入到一个html页面,但webBrowser1.DocumentStream流不是最新内容,希望各位大侠帮下忙,看有什么好的办法没有,在此先感谢大家了!~
...全文
187 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
tcmakebest 2014-06-19
  • 打赏
  • 举报
回复
如果要实现楼主的需求,浏览器需要做如下事情: 每当页面内容有变化的时候,同时刷新DocumentStream的内容以保持为最新状态,使内容发生变化的事件简单列举一下有: ajax 改变页面,在控件中修改输入的值,鼠标划过时控件颜色变化,字体变化,计时器在不断修改的当前时钟,等等... 不感觉无聊吗?即使能够实现,CPU也耗不起.楼主应该从其他方面解决这个问题.

110,983

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧