实现步骤:

一、新建一个窗体,加入webBrowser控件

控件名:webBrowser1

二、在窗体后台代码加入如下定义

[System.Runtime.InteropServices.ComVisibleAttribute(true)]
public partial class Form1 : Form
{
//...
}

三、加载网页

webBrowser1.Navigate(Application.StartupPath + "/UpDateReport.htm");
    webBrowser1.ObjectForScripting = this;  //这句必须,不然js不能调用C#

四、调用脚本方法

/// <summary>
/// 脚本方法
/// </summary>
/// <param name="tag">JS函数名|参数1|参数2</param>
/// <returns></returns>
private object EXEC_JS(System.Windows.Forms.WebBrowser webBrowser, string tag)
{
string[] args = tag.Split('|');
if (args.Length == 1)
{
return webBrowser.Document.InvokeScript(args[0], null);
}
else
{
object[] objects = new object[args.Length - 1];
Array.Copy(args, 1, objects, 0, objects.Length);
return webBrowser.Document.InvokeScript(args[0], objects);
}
}

五、C#调用脚本方法例子,可以有返回值

//JS方法
<script language="javascript">
function js_fun(args)
{
alert("我是通过js脚本弹出的。你输入的内容是:"+args);
return "JAVASCRIPT";
}
</script>
//C#代码
object returnvalue = EXEC_JS(webBrowser1, "js_fun|参数字符串");
MessageBox.Show("js方法返回值是:" + returnvalue.ToString());

六、JS调用C#方法的例子

//C#方法
public string Test(string args)
{
return "你输入的是:"+args;
}
//JS代码
<script language="javascript">
window.onload = function()
{
var CS_returnvalue= window.external.Test("aaa");
alert(CS_returnvalue);
}
</script>

转载于:https://www.cnblogs.com/zyx_blog/articles/1993473.html

C# webBrowser与javascript互调相关推荐

  1. WebBrowser介绍——Javascript与C++互操作

    WebBrowser控件是Microsoft提供的一个用于网页浏览的客户端控件,WebBrowser控件的使用相当广泛,例如很多邮件客户端都是使用可编辑的WebBrowser控件作为写邮件的工具,也有 ...

  2. Android Java和JavaScript互调

    (1)JavaScript调Java addJavascriptInterface 通过Android中 WebView.addJavascriptInterface(new JavaClass(), ...

  3. ASP.NET Core Blazor WebAssembly 之 .NET JavaScript互调

    Blazor WebAssembly可以在浏览器上跑C#代码,但是很多时候显然还是需要跟JavaScript打交道.比如操作dom,当然跟angular.vue一样不提倡直接操作dom:比如浏览器的后 ...

  4. 如何妥善处理WebBrowser对Javascript的错误问题,阻止JS弹出框,提高用户体验(原创)...

    由于项目需求,最近转战客户端,开始搞浏览器开发.众所周知,现在在微软平台上开发浏览器,最常用的方法就是扩展Webbrowser,但是首先要清楚的是,WebBrowser控件仅仅是对WebBrowser ...

  5. Windows phone 应用开发[14]-调用WebBrowser

    很久没有更新博客了.最近一直陷身在项目中难以有时间抽身梳理总结.关于博客确实很多想写的主题.节前大概草草 的梳理一下大概就有十几个主题.只能趁着放假的时间来逐渐把这批文章力所能及系统的更新出来. 主要 ...

  6. WebView详解与简单实现Android与H5互调

    为什么要学习Android与H5互调? 微信,QQ空间等大量软件都内嵌了H5,不得不说是一种趋势.Android与H5互调可以让我们的实现混合开发,至于混合开发就是在一个App中内嵌一个轻量级的浏览器 ...

  7. [置顶] android 与JavaScript的互相调用

    1.html代码 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html> ...

  8. 分享Silverlight/WPF/Windows Phone一周学习导读(3月14日-3月19日)

    用了近一周的Windows Phone 7,作为长期使用iPhone的用户,刚使用WP7的确让人感觉挺生硬的,其中不乏先入为主的理由. 尽管如此,我还是非常喜欢Windows Phone 7个性界面, ...

  9. ASP.NET Core Blazor Webassembly 之 渐进式应用(PWA)

    Blazor支持渐进式应用开发也就是PWA.使用PWA模式可以使得web应用有原生应用般的体验. 什么是PWA PWA应用是指那些使用指定技术和标准模式来开发的web应用,这将同时赋予它们web应用和 ...

最新文章

  1. sscanf实用功能简介
  2. 关于库存 库存BAPI
  3. android触摸外部关闭键盘,如何隐藏Android上的软键盘,点击外部EditText?
  4. Python Django手写分页代码
  5. 深度学习(7)TensorFlow基础操作三: 索引与切片
  6. 超详细的jQuery的 DOM操作,一篇就足够!
  7. Spring AOP之注解配置篇
  8. php viewmodel,PHP日记——Lavarel常用语句之View篇
  9. 使用RMAN迁移文件系统数据库到ASM
  10. linux调度器(一)——概述
  11. 台式计算机硬盘序号,[硬盘序列号的查看方法]台式机查看序列号的方法
  12. 万网如何修改dns服务器,万网域名如何修改DNS设置方法
  13. 数据结构——二叉树相关练习题
  14. 3.SEO优化--网站死链解决
  15. pdfmark生成pdf文件并下载
  16. 服务器ping值不稳定,服务器网络ping值过高的原因
  17. win10如何添加或禁用开机自启动项
  18. 英伟达Quadro RTX A5000/A4000显卡系统参数曝光
  19. 能用计算机做什么作文,电脑的用途作文(九篇)
  20. win10右下角天气怎么关

热门文章

  1. 教你用 Netty 实现一个简单的 RPC!
  2. 写给期待年薪百万的IT同学
  3. 扒一扒我遇见过哪些厌恶的技术面试官
  4. Consul入门01 - 安装Consul
  5. 【Python】青少年蓝桥杯_每日一题_12.11_开关灯问题
  6. 借用计算机不及时归还,陕西省农村信用社笔试试题(二)
  7. 美媒:谷歌巨型数据中心和美国小镇“抢水”
  8. 投资100亿美元,谷歌计划在2020年向美国办事处和数据中心
  9. 大数据时代数据中心的发展思考
  10. linux 网卡丢弃多播包,rp_filter及Linux下多网卡接收多播的问题