WPF中WebBrowser的使用方法及分析
2015-08-07 15:51
495 查看
基础知识
WebBrowser类承载并在HTML文档间导航。在WPF托管代码和HTML脚本间启用互操作性。
WebBrowser.Navigate方法(Uri)
异步导航到位于指定Uri处的文档。
命名空间:System.Windows.Controls
程序集:PresentationFramework(在PresentationFramework.dll中)
语法:public void Navigate(Uri source)
string szTmp = “http://192.168.0.11/sample.htm“;
Uri uri = new Uri(szTmp);
CamWeb.Navigate(uri);
WebBrowser.LoadCompleted事件
要导航到的文档完成下载时发生
向导航的事件处理程序传递了NavigationEventArgs类的一个实例。
C#语法:
public event LoadCompletedEventHandler LoadCompleted
XAML语法:
WebBrowser.Document属性
获取表示所承载的HTML页的文档对象
MSHTML 是微软的窗口操作系统(Windows)搭载的网页浏览器—Internet Explorer的排版引擎的名称,(又称为Trident)。
MSHTML是微软公司的一个COM组件,该组件封装了HTML语言中的所有元素及其属性,通过其提供的标准接口,可以访问指定网页的所有元素。
MSHTML提供了丰富的HTML文档接口,有IHTMLDocument、IHTMLDocument2、…、IHTMLDocument7等7种。其中,IHTMLDocument只有一个Script属性,是管理页面脚本用的;
IHTMLDocument2接口跟C#的HtmlDocument类(即通过Web Browser控件直接获得的Document属性)很相似;IHTMLDocument3是跟Visual Basic 6.0里的文档对象相似的一个接口,基本上可以用到的方法都在其中。
MSHTML还提供封装了对HTML元素完整操作的IHTMLElement接口,通过IHTMLElement,可以准确地判断HTML元素节点的类型,还可以获取HTML元素节点的所有属性。
实际应用
WebBrowser控件不停的导航一个.html文件,直到导航成功。但是如果想要导航的.html文件刚开始不存在,一段时候后才存在的话就有些棘手。
可以采用延时,但是.html产生的时间是不确定的,这样就无法确定延时的秒数。
所以可以采用以下方法:
在XAML文件中加入:
<WebBrowser Name="CamWeb" Width="640" Height="480"LoadCompleted="CamWeb_LoadCompleted" />
在.CS文件的初始化中加入:
string szTmp = "http://192.168.0.11/sample2.htm"; Uri uri = new Uri(szTmp); CamWeb.Navigate(uri);
在.CS文件中实现 LoadCompleted事件:
private void CamWeb_LoadCompleted(object sender, NavigationEventArgs e) { ((sender as WebBrowser).Document as mshtml.HTMLDocumentEvents_Event).oncontextmenu += new mshtml.HTMLDocumentEvents_oncontextmenuEventHandler(ExtendFrameControl_oncontextmenu); mshtml.HTMLDocument dom = (mshtml.HTMLDocument)CamWeb.Document; //定义HTML dom.documentElement.style.overflow = "hidden"; //隐藏浏览器的滚动条 dom.body.setAttribute("scroll", "no"); //禁用浏览器的滚动条 if (!dom.body.innerHTML.Contains("123456")) { string szTmp = "http://192.168.0.11/sample2.htm"; Uri uri = new Uri(szTmp); CamWeb.Navigate(uri); } }
相关文章推荐
- ueditor在QQ浏览器或者IE浏览器中无法加载
- js select级联,上面分类,下面是内容
- 如何更改GridView的item按下去的背景?
- apk重签名方法
- 浅习OpenGl ES笔记
- 数据结构基础(21) --DFS与BFS
- Android触摸事件传递机制学习笔记
- 【android控件学习笔记】使用Spinner实现下拉列表
- java配置文件properties
- Android下获取未安装apk包图标失败解决方法
- 19.2.7 How MySQL Partitioning Handles NULL
- UICollectionView的使用
- 数据结构基础(20) --图的存储结构
- Linux进程间通信方式--信号,管道,消息队列,信号量,共享内存
- java中的==和equals
- 第17章 枚举类型与泛型
- 字符指针和字符数组的初始化
- LoadRunner性能测试指挥中心Controller 《第四篇》
- “iOS 推送通知”证书及测试:从创建到设置到运行
- 来自大数据的反思:需要你读懂的10个小故事