C#和JS交互 WebBrowser实例
- 本文实现了WebBrowser的简单例子
- 1.引用System.Windows.Froms.dll
- 2.引用WindowsFormsIntegration.dll
- 代码如下:
- public partial class MainWindow : Window
- {
- public MainWindow()
- {
- InitializeComponent();
- }
- private void TextBlock_MouseDown(object sender, MouseButtonEventArgs e)
- {
- Window _w = new Window();
- web_control web_c = new web_control("http://www.baidu.com");
- _w.Content = web_c;
- _w.Owner = this;
- _w.Show();
- }
- }
- public class web_control : UserControl
- {
- public System.Windows.Forms.WebBrowser _web_browser;
- public web_control(string url)
- {
- _web_browser = new System.Windows.Forms.WebBrowser();
- _web_browser.ObjectForScripting = new external_dispath(this);
- var host = new System.Windows.Forms.Integration.WindowsFormsHost();
- host.Child = _web_browser;
- Content = host;
- Loaded += (senser, e) =>
- {
- _web_browser.Navigate(url);
- };
- }
- }
- 至此,上方实现了简单的例子(除了红色那一句之外)
- =========================================17.7.21更新以下========================================================
- 但在后来遇到要与JS交互,在webBrowser使用过程中为了C#和JS通讯,webBrowser必须设置ObjectForScripting的属性,
- 它是一个object,这个object可以提供给webBrowser控件载入的网页上的script访问。(上方红色语句)
- 在设置过webBrowser控件的ObjectForScripting属性后,还需要设置应用程序对com可见,不然会抛出一个异常
- (ObjectForScripting 的类必须对 COM 可见。请确认该对象是公共的,或考虑向您的类添加 ComVisible 属性。),可做如下设置:
- [System.Runtime.InteropServices.ComVisibleAttribute(true)] //使接口可见
- public class external_dispath
- {
- public web_control m_wbcontrol;
- public external_dispath(web_control wb_c)
- {
- m_wbcontrol = wb_c;
- }
- public Object createObject(String name)
- {
- return new external_dispath(m_wbcontrol);
- }
- public void closeWebDlg() //为了让JS调的,作用是关闭网页弹窗
- {
- (m_wbcontrol.Parent as Window).Close();
- }
- 通过在c#这一层实现external类,来达到在点击网页中右上角的关闭按钮时,关闭网页的弹窗
- }
- JS代码:
- $(".close-btn").on("click",function(
- e){
- e.preventDefault();
- TA.log({ld:'client', id:'lhb_kx_gb'});
- try{
- external.closeWebDlg(); //调用外部的函数
- }catch (e){} });
- 最后疑问是external是哪里来的,JS和C#是怎么约定的,以后在学习JS后可能会有深好理解
C#和JS交互 WebBrowser实例的更多相关文章
- 第4章-Vue.js 交互及实例的生命周期
一.学习目标 了解实例生命周期的过程 理解钩子函数的作用 掌握Vue.js过滤器的使用方法 (重点) 能够使用网络请求进行前后端交互 (重点.难点) 二.交互的基本概念 2.1.前端和后端的概念 说明 ...
- WPF和js交互 WebBrowser数据交互
this.webBrowser1.ObjectForScripting = new OprateBasic(); this.webBrowser1.Source = new Uri(Environme ...
- [Winform]js与webbrowser交互
摘要 目前项目中采用的方式是内嵌浏览器的方式,打开本地或者互联网上的h5页面.在开发之前做了一下调研.目前常用的在C#封装的浏览器内核中,Chromium 内核封装有Xilium.Cefglue.Ce ...
- WinForm程序执行JS代码的多种方法以及使用WebBrowser与JS交互
方法一 使用微软官方组件Interop.MSScriptControl 1.msscript.ocx下载的地址 http://www.microsoft.com/downloads/details ...
- C#中webbrowser与javascript(js)交互的方法
今天在做一个项目的时候需要用c#搞一个webbrowser,然后有些地方还需要与js交互.所以就查了一下资料,发现很多博客提到了但是却没有说下具体的操作.所以我就写一下. 开发环境是Visual St ...
- Winform 通过 WebBrowser 与 JS 交互
Winform 通过 WebBrowser 与 JS 交互 魏刘宏 2019.08.17 之前在使用 Cef (可在 Winform 或 WPF 程序中嵌入 Chrome 内核的网页浏览器的组件)时, ...
- WebView---Android与js交互实例
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true 原文地址:http://blog.csdn.net/it10 ...
- HTML---Android与js交互实例
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML) ...
- Android与js交互实例
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true Android(Java)与JavaScript(HTML) ...
随机推荐
- OSG实现利用菲波那契网格(Fibonacci lattice 或 Fibonacci grid)均分球面
#include<Windows.h> #include<osg/Node> #include<osg/Geode> #include<osg/Group&g ...
- Spring Http Basic(基本)和Digest(摘要)验证
Basic(基本)和Digest(摘要)验证都是web应用中很受欢迎的可选机制. Basic验证一般用来处理无状态的客户端,它们在每次请求都附带它们的证书. 很常见的用法是把它和基于表单的验证一起使用 ...
- [Cqoi2015] 编号 【逆向思维,暴力枚举】
Online Judge:Luogu-P4222 Label:逆向思维,暴力枚举 题目描述 你需要给一批商品编号,其中每个编号都是一个7位16进制数(由0~9, a-f组成).为了防止在人工处理时不小 ...
- Luogu P3835 【模板】可持久化平衡树(fhq Treap)
P3835 [模板]可持久化平衡树 题意 题目背景 本题为题目普通平衡树的可持久化加强版. 题目描述 您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本 ...
- What is python .. (“dot dot”) notation syntax?
What you have is a float literal without the trailing zero, which you then access the __truediv__met ...
- 最全的CSS hack没有之一
1.何为HACK? 简单的说,HACK就是只有特定浏览器才能识别这段hack代码.Hack也可以说是让前端最为头疼的问题,因为要写N多种兼容代码.当然,IE是最让人蛋疼的. 一般来说,CSS HACK ...
- Session - 什么叫一次会话
转载自:https://blog.csdn.net/qin_xiaofang/article/details/77725946 网上收集的:Session代表服务器与浏览器的一次会话过程,这个过程是连 ...
- 群晖的moments套件 发生未知错误
一次了,哎 也不知道什么原因引起的 只能再搞一遍 先把homes文件夹数据弄走,免得弄丢 然后卸载momemts,删除数据库 还有其他人遇到这个情况http://www.gebi1.com/threa ...
- pip安装requests报错unicodeEncodeError:'ascii' codec can\t encode charactesers in position 9-12:ordinal not in range(128)
前提 : 已经安装pip(pip的安装我参考的是本博客转载脚本之家的步骤,实验可以成功) 1. 在cmd输入命令转到pip安装目录: 2. 运行后出现错误 3. 步骤2中的错误应该和编码有关.搜索百度 ...
- Octave 软件的安装
每次安装软件都感觉是一种心痛的历程.下载安装,然后就跳出一堆的错误,之后就各种百度求救,然后就搞了大半天,有时候还搞不定. 最后,搞定的时候发现,原来这么简单,结果时间就这样浪费了,所以还是把这个过程 ...