WinForm中WebBrowser的使用
最近由于工作需要,研究了下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的使用的更多相关文章
- 记WinForm中WebBrowser相关的俩个问题
问题一:如何不让WebBrowser中弹出“安全警告” 当链接https网址时,IE会自动弹出上图中的窗口. 关闭窗口的具体思路如下: 使用WebBrowser加载中/加载完毕后触发的事件处理程序,在 ...
- winform中webBrowser模拟网页操作中遇到的问题
我们通过网页上传一些特殊数据的时候,由于必填项众多,数量量大的时候,会发现工作相当繁琐,前段时间做了一个winform内嵌webBrowser模拟网页上传文档的小工具,发现了许多问题,总结一下: 先说 ...
- C# Winform 中webBrowser显示html内容时禁止错误提示的方法
在winform中有一个控件可以显示html的内容,该控件就是webbrowser,设置它的DocumenText属性为HTML的内容即可. 在使用WebBrowser做UI的时候,我们有时不希望里面 ...
- winform中WebBrowser控件执行脚本
在实际应用中我们可能需要WebBrowser控件主动执行我们需要的脚本,执行脚本现在有两种方法. 1.WebBrowser控件加载脚本,简单方便,适用于简短的脚本,无法执行复杂操作. webBrows ...
- C# Winform中WebBrowser给网页中的input控件赋值/设置值
订阅WebBrowser的DocumentCompleted事件,在里面写入 private void browser_DocumentCompleted(object sender, WebBrow ...
- Winform中修改WebBrowser控件User-Agent的方法(已经测试成功)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...
- WinForm中嵌入WebBrowser,并且支持C#和JS方法的相互调用
纯粹WinForm界面不够友好,实现数据复杂度高的处理有些力不从心,所以看了看api以后决定用html来做. 我的wlw的代码插件不是很好用,大家凑合看吧 类前说明引用和权限 1: [Permissi ...
- WPF中嵌入WinForm中的webbrowser控件
原文:WPF中嵌入WinForm中的webbrowser控件 使用VS2008创建WPF应用程序,需使用webbrowser.从工具箱中添加WPF组件中的webbrowser发现其中有很多属性事件不能 ...
- 通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页
通过批处理操作注册表实现winform应用中Webbrowser以指定的IE版本加载网页 rem 强制WebBrowser控件使用指定IE版本显示应用的网页 IF EXIST %windir%\Sys ...
随机推荐
- vue.js组件
<!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title&g ...
- js 鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层异步加载模式
js用处:在做商城时,首页图片太多,严重影响首页打开速度,所以我们需要用到异步加载楼层.js名称:鼠标滚动到某屏时,加载那一屏的数据,仿京东首页楼层模式js解释:1.用于商城的楼层内容异步加载,滚动条 ...
- 使用JavaScript的Join方法
在本例中,我们将创建一个数组,然后把它的所有元素放入一个字符串: <script type="text/javascript"> var arr = new Array ...
- python用迭代器方式便利目录下的文件
from pathlib import Path pths = [pth for pth in Path.cwd().iterdir()] 如果是os.listdir()这会返回一个list,文件非常 ...
- 【转载】nodejs,npm,express分别什么?
很多刚刚接触nodejs的初学者,都会经历一个很繁冗的环境安装过程. 一般主要要安装nodejs,npm和express三样东西.那么这三样东西分别是干什么的呢? 本篇文章就大致介绍一下这三样东西分别 ...
- scichart by Kline
<UserControl x:Class="Abt.Controls.SciChart.Example.Examples.IWantTo.CreateMultiseriesChart. ...
- PHP类型转换
php代码 <?php$foo = "0"; // $foo 是字符串 (ASCII 48)var_dump($foo) ; echo '<br/>'; $foo ...
- 尚学堂Spring视频教程(一):模拟Spring
Spring简单的说就是作为控制反转的容器,看这篇文章前需要先搞懂“控制反转和依赖注入“这个设计模式 我们先来模拟Spring,实现用户添加的功能,新建WEB项目”Spring_0100_Abstra ...
- [ 转载 ] kernel32.BaseThreadInitThunk
Edited by wap2k, 20 October 2014 - 07:52 PM. This function is called to start a Win32 thread. Its pu ...
- 思考方式--SMART原则
如果你对项目管理.系统架构有兴趣,请加微信订阅号"softjg",加入这个PM.架构师的大家庭 万事开头于你目标的设定,如果开始走错了,那么后面的路将会更加的错误,甚至于更加的努力 ...