最近由于工作需要,研究了下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. [MySQL] SqlServer 迁移到 MySQL 方法介绍

    一.原则: 只迁移表结构和数据,存储过程.函数.触发器尽量自己改写,并充分测试. 迁移前,先设置好数据库的一些参数,比如默认存储引擎,默认编码等,方便后续导入. 二.方法: 1.使用MySQL Wor ...

  2. svn-git

    1.创建版本库 # svnadmin create proj 2.修改配置文件  Auth文件    [groups]    admin=shguo    [/]    @admin=rw    *= ...

  3. 改写jquery.validate.unobtrusive.js实现气泡提示mvc错误

    个人对于这个js.css不是很擅长,所以这个气泡提醒的样式网上找了下,用了这个http://www.cnblogs.com/wifi/articles/2918950.html当中的第一种写法. 对于 ...

  4. AndroidUI设计之布局-详细解析布局实现

    写完博客的总结 : 以前没有弄清楚的概念清晰化 父容器与本容器属性 : android_layout...属性是本容器的属性, 定义在这个布局管理器的LayoutParams内部类中, 每个布局管理器 ...

  5. iis网站发布相关问题

    最近在公司的服务器上发布了一个简单的web应用,整个做下来到上线用了将近2天时间,期间出现了各种问题,现在发出来供大家参考: 1.iis上发布后出现访问网站,出现“IIS服务器被配置为不列出此目录的内 ...

  6. CentOS7:安装Puppet

    环境说明: 192.168.154.137 master.localdomain #Puppet Server 192.168.154.138 agent1.localdomain #Puppet A ...

  7. ubuntu下git安装及使用

    ubuntu下git安装及使用   其实,好几个月前,就已经安装好了,可是一直搁置在那儿,所以密码等一些其它细节都忘的差不多了,所以今天就重新部署了一下,并开始积极使用......... 1,git ...

  8. CentOS 7虚拟机下模拟实现nginx负载均衡

    以CentOS 7为例,我们模拟实现nginx来处理静态资源,apache来处理php 1.首先我们来安装nginx # wget  http://nginx.org/packages/centos/ ...

  9. IOS :编译时出现的错误 ,希望可以有所帮助

    1."std::ios_base::Init::~Init()", referenced from 答1: 如果出现这样的编译问题,是需要再加进libstdc++.dylib和li ...

  10. Have Fun with Numbers及循环链表(约瑟夫问题)

    1. 循环链表(约瑟夫问题) https://github.com/BodhiXing/Data_Structure 2. Have Fun with Numbers https://pta.pate ...