1. 本文实现了WebBrowser的简单例子
  2. 1.引用System.Windows.Froms.dll
  3. 2.引用WindowsFormsIntegration.dll
  4. 代码如下:
  5. public partial class MainWindow : Window
  6. {
  7. public MainWindow()
  8. {
  9. InitializeComponent();
  10. }
  11. private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e)
  12. {
  13. Window _w = new Window();
  14. web_control web_c = new web_control("http://www.baidu.com");
  15. _w.Content = web_c;
  16. _w.Owner = this;
  17. _w.Show();
  18. }
  19. }
  20. public class web_control : UserControl
  21. {
  22. public System.Windows.Forms.WebBrowser _web_browser;
  23. public web_control(string url)
  24. {
  25. _web_browser = new System.Windows.Forms.WebBrowser();
  26. _web_browser.ObjectForScripting = new external_dispath(this);
  27. var host = new System.Windows.Forms.Integration.WindowsFormsHost();
  28. host.Child = _web_browser;
  29. Content = host;
  30. Loaded += (senser, e) =>
  31. {
  32. _web_browser.Navigate(url);
  33. };
  34. }
  35. }
  36. 至此,上方实现了简单的例子(除了红色那一句之外)
  37. =========================================17.7.21更新以下========================================================
  38. 但在后来遇到要与JS交互,在webBrowser使用过程中为了C#和JS通讯,webBrowser必须设置ObjectForScripting的属性,
  39. 它是一个object,这个object可以提供给webBrowser控件载入的网页上的script访问。(上方红色语句)
  40. 在设置过webBrowser控件的ObjectForScripting属性后,还需要设置应用程序对com可见,不然会抛出一个异常
  41. (ObjectForScripting 的类必须对 COM 可见。请确认该对象是公共的,或考虑向您的类添加 ComVisible 属性。),可做如下设置:
  42. [System.Runtime.InteropServices.ComVisibleAttribute(true)]  //使接口可见
  43. public class external_dispath
  44. {
  45. public web_control m_wbcontrol;
  46. public external_dispath(web_control wb_c)
  47. {
  48. m_wbcontrol = wb_c;
  49. }
  50. public Object createObject(String name)
  51. {
  52. return new external_dispath(m_wbcontrol);
  53. }
  54. public void closeWebDlg()          //为了让JS调的,作用是关闭网页弹窗
  55. {
  56. (m_wbcontrol.Parent as Window).Close();
  57. }
  58. 通过在c#这一层实现external类,来达到在点击网页中右上角的关闭按钮时,关闭网页的弹窗
  59. }
  60. JS代码:
  61. $(".close-btn").on("click",function(
  62. e){
  63. e.preventDefault();
  64. TA.log({ld:'client', id:'lhb_kx_gb'});
  65. try{
  66. external.closeWebDlg();      //调用外部的函数
  67. }catch (e){} });
  68. 最后疑问是external是哪里来的,JS和C#是怎么约定的,以后在学习JS后可能会有深好理解

C#和JS交互 WebBrowser实例的更多相关文章

  1. 第4章-Vue.js 交互及实例的生命周期

    一.学习目标 了解实例生命周期的过程 理解钩子函数的作用 掌握Vue.js过滤器的使用方法 (重点) 能够使用网络请求进行前后端交互 (重点.难点) 二.交互的基本概念 2.1.前端和后端的概念 说明 ...

  2. WPF和js交互 WebBrowser数据交互

    this.webBrowser1.ObjectForScripting = new OprateBasic(); this.webBrowser1.Source = new Uri(Environme ...

  3. [Winform]js与webbrowser交互

    摘要 目前项目中采用的方式是内嵌浏览器的方式,打开本地或者互联网上的h5页面.在开发之前做了一下调研.目前常用的在C#封装的浏览器内核中,Chromium 内核封装有Xilium.Cefglue.Ce ...

  4. WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互

    方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址   http://www.microsoft.com/downloads/details ...

  5. C#中webbrowser与javascript(js)交互的方法

    今天在做一个项目的时候需要用c#搞一个webbrowser,然后有些地方还需要与js交互.所以就查了一下资料,发现很多博客提到了但是却没有说下具体的操作.所以我就写一下. 开发环境是Visual St ...

  6. Winform 通过 WebBrowser 与 JS 交互

    Winform 通过 WebBrowser 与 JS 交互 魏刘宏 2019.08.17 之前在使用 Cef (可在 Winform 或 WPF 程序中嵌入 Chrome 内核的网页浏览器的组件)时, ...

  7. WebView---Android与js交互实例

    Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true 原文地址:http://blog.csdn.net/it10 ...

  8. HTML---Android与js交互实例

    Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML) ...

  9. Android与js交互实例

    Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML) ...

随机推荐

  1. 【机器学习】机器学习入门08 - 聚类与聚类算法K-Means

    时间过得很快,这篇文章已经是机器学习入门系列的最后一篇了.短短八周的时间里,虽然对机器学习并没有太多应用和熟悉的机会,但对于机器学习一些基本概念已经差不多有了一个提纲挈领的了解,如分类和回归,损失函数 ...

  2. 不同版本springboot端点开启方法

    1.X版本与2.X区别:2.X大部分路径要加“/actuator” 端点列表(注意最后一栏Sensitive为true的端点如果不设置为false将不可访问): https://docs.spring ...

  3. Android开发 Camera2开发_1_拍照功能开发

    介绍 google已经在Android5.1之后取消了对Camera1的更新,转而提供了功能更加强大的Camera2.虽然新版本依然可以使用Camera1但是,不管是各种机型适配还是拍照参数自定义都是 ...

  4. React 组件&Props

    组件&Props 组件&Props 组件可以将UI切分成一些独立的.可复用的部件,这样你就只需要专注于构建每一个单独的组件. 组件从概念上看就像是函数,它可以接受任意的输入值(称之为& ...

  5. 你真的了解ES6的promise吗?

    promise是一个构造函数,是用来解决ajax回调地狱的问题.axios就是用promise封装的.用于解决ajax请求时出现的回调地狱的问题.异步伴随回调. const p1 = new Prom ...

  6. 【DM642学习笔记十】DSP优化记录

    1. 处理的数据先EDMA到片内,具有更高的效率! 以YUV2RGB为例: #pragma DATA_SECTION(onchipBuf0_y,".INTPROCBUFF"); # ...

  7. pytorch dataloader 取batch_size时候 出现bug

    1.RuntimeError: invalid argument 0: Sizes of tensors must match except in dimension 0. Got 342 and 2 ...

  8. MAC中怎么安装python

    转自:https://blog.csdn.net/hou_manager/article/details/79555809 一.Python 介绍 Python介绍 Python3在2008年12月3 ...

  9. leyou_01_环境搭建

    1.乐优商城项目搭建 前端技术: 基础的HTML.CSS.JavaScript(基于ES6标准) JQuery Vue.js 2.0以及基于Vue的框架:Vuetify 前端构建工具:WebPack ...

  10. windows 和 mac 文件夹共享问题汇总

    目标:windows上的文件夹,共享给MAC,mac可以将文件复制到windows上来 windows设置共享文件夹,然后在mac上访问 假设win的ip地址是10.10.27.11,则mac上远程方 ...