wpf CefSharp 与 js交互
通过 NuGet 获取 CefSharp.WpF 组件。
xmlns:cefSharp="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf" //加载
需要把项目的 cpu 设置成 x86 ,Framework4.5
//使用控件
<cefSharp:ChromiumWebBrowser Name="mychrome"></cefSharp:ChromiumWebBrowser>
this.mychrome.MenuHandler = new MenuHandler(); //去掉右键菜单 需要实现 IContextMenuHandler 这个接口
this.mychrome.Address = @"url";
this.mychrome.RegisterJsObject("JsObj", new CallbackObjectForJs(),false); //带false 可以识别大写字母开头的函数或变量
// this.mychrome.RegisterJsObject("JsObj", new CallbackObjectForJs()); //不带 false 不能识别大写字母开头的函数或变量
//注 引用文章 这个也是我开始遇到的问题,无法让 js 调用C#函数
// CefSharp 默认的 RegisterJsObject(没有 camelCaseJavascriptNames 参数),只认小写字母开始的属性、方法名称。
// 使用带 camelCaseJavascriptNames 参数的 RegisterJsObject,传入 false,就能识别大写字母开始的属性、方法名称了。
public class CallbackObjectForJs
{
public string name = "";
public void showTest(string msg)
{
MessageBox.Show(msg);
}
}
js
JsObj.name = "name";
JsObj.showTest("test");
C#调用 js
方式1. ExecuteScriptAsync 方法使用方式与 js 的 eval方法一样,异步执行,无返回值。
// xxx为js的方法名称
mychrome.GetBrowser().MainFrame.ExecuteScriptAsync("xxx()");
// 为 js 的 变量jsVar赋值 'abc'
mychrome.GetBrowser().MainFrame.ExecuteScriptAsync("jsVar='abc'");
注:好像是 ExecuteJavaScriptAsync 这个方法
方式2. EvaluateScriptAsync 方法使用方式与 js 的 eval方法一样,异步执行,有返回值。
Task<CefSharp.JavascriptResponse> t =
mychrome.GetBrowser().MainFrame.EvaluateScriptAsync("callTest2()");
// 等待js 方法执行完后,获取返回值
t.Wait();
// t.Result 是 CefSharp.JavascriptResponse 对象
// t.Result.Result 是一个 object 对象,来自js的 callTest2() 方法的返回值
if(t.Result.Result != null)
{
MessageBox.Show(t.Result.Result.ToString());
}
wpf CefSharp 与 js交互的更多相关文章
- WPF和WebBrowser JS交互
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...
- WPF内嵌CEF控件,与JS交互
1)安装cefsharp.winform包 打开VS2017,打开nuget,找到cefsharp.winform,安装 问:为什么wpf程序不使用cefsharp.wpf? 答:因为cefwpf 4 ...
- Winform 通过 WebBrowser 与 JS 交互
Winform 通过 WebBrowser 与 JS 交互 魏刘宏 2019.08.17 之前在使用 Cef (可在 Winform 或 WPF 程序中嵌入 Chrome 内核的网页浏览器的组件)时, ...
- 关于JS交互--调用h5页面,点击页面的按钮,分享到微信朋友圈,好友
关于js交互,在iOS中自然就想到了调用代理方法 另外就是下面的,直接上代码了: 如果你的后台需要知道你的分享结果,那么,就在回调里面调用上传到服务器结果的请求即可
- webView和js交互
与 js 交互 OC 调用 JS // 执行 js - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *title = [web ...
- 李洪强iOS经典面试题147-WebView与JS交互
李洪强iOS经典面试题147-WebView与JS交互 WebView与JS交互 iOS中调用HTML 1. 加载网页 NSURL *url = [[NSBundle mainBundle] UR ...
- WebView---Android与js交互实例
Android 中可以通过webview来实现和js的交互,在程序中调用js代码,只需要将webview控件的支持js的属性设置为true 原文地址:http://blog.csdn.net/it10 ...
- iOS与JS交互实战篇(ObjC版)
前言 ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只介绍iOS7.0后出来的JavaScriptCore framework. 关于JavaS ...
- Android WebView加载本地html并实现Java与JS交互
最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是 ...
随机推荐
- linux下如何获取某一进程占用的物理内存和虚拟内存
首先,ps -A查看你所查看进程的进程号 ps -A 加入进程号为pid 那么使用如下脚本,可以打印该进程使用的虚拟内存和物理内存: root@Storage:/mnt/mtd# cat rss.sh ...
- https://www.cyberciti.biz/faq/howto-change-rename-user-name-id/
https://www.cyberciti.biz/faq/howto-change-rename-user-name-id/
- Linux下kill进程脚本
Linux下kill进程脚本 在Linux有时会遇到需要kill同一个程序的进程,然而这个程序有多个进程,一一列举很是繁琐,使用按名字检索,统一kill Perl脚本 使用方法 kill_all.pl ...
- 一个自己主动依据xcode中的objective-c代码生成类关系图的神器
https://github.com/kimsungwhee/KSHObjcUML 安装方法: 1.下载项目 2.执行 3.会又一次开启一个新的xcode 4.选择一个项目,点击 Objc-UML 会 ...
- [React] Test friendly approach
Add functional function such as change state, this should have tests covered. For example, in a comp ...
- Android中密码输入内容可见性切换
今天在做项目的时候遇到了一个关于密码输入框可见性切换问题,上网搜了搜,这里面门道还不小,做一个记录吧,下次遇到就好解决了. 首先写了一个简单的测试工程: <LinearLayout xmlns: ...
- 断言(Assert)与异常(Exception)
## 断言和异常 断言是用来检查非法情况而不是错误情况的,用来帮开发者快速定位问题的位置. 异常处理用于对程序发生异常情况的处理,增强程序的健壮性和容错性. ## 断言的使用 在防御式编程中经常会用断 ...
- log4j配置参考手册:log4j.properties和log4j.xml两种格式
log4j是Java Web开发中,最常用的日志组件之一.网上关于log4j的配置满天飞,我主要是从网上学习的配置.之前的很多年,主要使用log4j.properties这种格式.后来,项目中boss ...
- java线程池框架源代码分析
相关类Executor,Executors.AbstractExecutorService.ExecutorService Executor:整个线程池运行者框架的顶层接口. 定义了一个execute ...
- oracle中imp导入数据中文乱码问题(转)
(转自 http://blog.chinaunix.net/uid-186064-id-2823338.html) oracle中imp导入数据中文乱码问题 用imp命令向oracle中导入数据后, ...