最近由于工作需要,研究了下Winform的WebBrowser控件,在这里给大家分享下。

1、WebBrowser导航

WebBrowser在进行导航的时候需要用到Navigate(string urlString)方法

2、执行已有的JavaScript函数

使用WebBrowser.Document.InovkeScript(string scriptName)

3、执行自定义的Javascript函数

这里需要先将自定义的Javascript写入到WebBrowser.Document.Body中,然后使用InvokScript()方法执行函数。

这里需要引用Microsoft.mshtml.dll

例子:

    

 public static class WebBrowserHelper
{
/// <summary>
/// 创建一个Javascript标签并附加到Document中 如<script type="text/javascript">function(){} </script>
/// </summary>
/// <param name="browser"></param>
/// <param name="script"></param>
/// <returns></returns>
public static void CreateJSElement(WebBrowser browser, string script)
{
var tag = browser.Document.CreateElement("script"); var scriptElement = tag.DomElement as IHTMLScriptElement; scriptElement.type = "text/javascript";//设定为Javascript
scriptElement.text = script;//设置内容 browser.Document.Body.AppendChild(tag);
}
}

这里我们用一个方法 将自定义的JS Append到Document中,调用刚刚的方法

public void RunJS(WebBrowser browser)
{
string scriptStr="function sayHello(){ alert(\"Hello\");}";//我们要执行的自定义函数
WebBrowserHelper.CreateJSElement(browser,scriptStr);//将这段函数附加到Document中 browser.Doucment.InvokeScript("sayHello");//执行sayHello()函数 }

4、获取并处理Javascript函数的返回值

InvokeScript(string scriptName)方法会返回一个Object类型的返回值

如果这个值的类型是Javascript中的 String、Number类型,可以直接调用Convert.ToString(),Convert.ToInt32() 进行转换并取值使用

如果这个值得类型是Javascript中的 Object、Array 类型,则返回一个System.__ComObject类型的对象,目前为止还没找到如何取值的办法,因此这里我选择提供一个自定义函数,将我们要的返回值序列化为JSON字符串再返回。

由于WebBrowser不支持HTML5标准,无法使用JSON.stringify()函数,这里我们需要引用其他序列化JS对象的插件。

这里推荐 Jquery-Json     在这里下载

使用方式很简单 $.toJSON(object);

总体上遇到并解决的问题就是这些了 具体的一些代码 可以  下载DEMO

WinForm中WebBrowser的使用的更多相关文章

  1. 记WinForm中WebBrowser相关的俩个问题

    问题一:如何不让WebBrowser中弹出“安全警告” 当链接https网址时,IE会自动弹出上图中的窗口. 关闭窗口的具体思路如下: 使用WebBrowser加载中/加载完毕后触发的事件处理程序,在 ...

  2. winform中webBrowser模拟网页操作中遇到的问题

    我们通过网页上传一些特殊数据的时候,由于必填项众多,数量量大的时候,会发现工作相当繁琐,前段时间做了一个winform内嵌webBrowser模拟网页上传文档的小工具,发现了许多问题,总结一下: 先说 ...

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

    在winform中有一个控件可以显示html的内容,该控件就是webbrowser,设置它的DocumenText属性为HTML的内容即可. 在使用WebBrowser做UI的时候,我们有时不希望里面 ...

  4. winform中WebBrowser控件执行脚本

    在实际应用中我们可能需要WebBrowser控件主动执行我们需要的脚本,执行脚本现在有两种方法. 1.WebBrowser控件加载脚本,简单方便,适用于简短的脚本,无法执行复杂操作. webBrows ...

  5. C# Winform中WebBrowser给网页中的input控件赋值/设置值

    订阅WebBrowser的DocumentCompleted事件,在里面写入 private void browser_DocumentCompleted(object sender, WebBrow ...

  6. Winform中修改WebBrowser控件User-Agent的方法(已经测试成功)

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  7. WinForm中嵌入WebBrowser,并且支持C#和JS方法的相互调用

    纯粹WinForm界面不够友好,实现数据复杂度高的处理有些力不从心,所以看了看api以后决定用html来做. 我的wlw的代码插件不是很好用,大家凑合看吧 类前说明引用和权限 1: [Permissi ...

  8. WPF中嵌入WinForm中的webbrowser控件

    原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能 ...

  9. 通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页

    通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页 rem 强制WebBrowser控件使用指定IE版本显示应用的网页 IF EXIST %windir%\Sys ...

随机推荐

  1. Python 2.7.x 和 3.x 版本的重要区别

    许多Python初学者都会问:我应该学习哪个版本的Python.对于这个问题,我的回答通常是“先选择一个最适合你的Python教程,教程中使用哪个版本的Python,你就用那个版本.等学得差不多了,再 ...

  2. contains 方法

    不管在c#中还是java中,很多类型都有contains方法.它的原理是什么? 看一个java的例子 http://blog.csdn.net/fwwdn/article/details/674684 ...

  3. android-studio设置代理

    /home/{user}/.gradle/gradle.properties org.gradle.jvmargs=-Xmx1536m -DsocksProxyHost=127.0.0.1 -Dsoc ...

  4. vbox下创建共享存储

    1.创建共享盘VBoxManage.exe createhd -filename D:\VM\linux01\ocr_vote.vdi -size 2048 -format VDI -variant ...

  5. Spring注解学习

    参考链接 http://blog.csdn.net/xyh820/article/details/7303330/

  6. pacman -Syu : key could not be looked up remotely.

    # sudo pacman -Syu...error: key "5F702428F70E0903" could not be looked up remotelyerror: r ...

  7. java工作流软件发送邮件的方案

    利用javamail的功能将发送邮件的功能集成到java工作流系统中.javamail包提供有发送邮件的方法,设置发送人地址,收件人地址,抄送,主题,邮件服务器地址,认证用户等信息,再调用javama ...

  8. Linux里的2>&1

    我们在Linux下经常会碰到nohup command>/dev/null 2>&1 &这样形式的命令.首先我们把这条命令大概分解下首先就是一个nohup表示当前用户和系统 ...

  9. cmd执行mysql操作

    (以下已安装到本机的mysql为例) 登录mysql数据库,如果没有在环境变量配置path到mysql中的bin目录,需要手动进入该目录中 执行:mysql -u用户名 -p密码 (注意:只要进入了m ...

  10. (Hibernate进阶)Hibernate映射——多对多关联映射(八)

    多对多映射是现实生活中最常见的映射,也是最容易理解的映射.废话少说,直接开始. 映射原理 不论是单向关联还是双向关联都是通过第三张表,将两个表中的主键放到第三张做一个关联.用第三张表来解决可能会造成数 ...