原文: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交互的更多相关文章

  1. WPF和WebBrowser JS交互

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.W ...

  2. WPF内嵌CEF控件,与JS交互

    1)安装cefsharp.winform包 打开VS2017,打开nuget,找到cefsharp.winform,安装 问:为什么wpf程序不使用cefsharp.wpf? 答:因为cefwpf 4 ...

  3. Winform 通过 WebBrowser 与 JS 交互

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

  4. 关于JS交互--调用h5页面,点击页面的按钮,分享到微信朋友圈,好友

    关于js交互,在iOS中自然就想到了调用代理方法 另外就是下面的,直接上代码了: 如果你的后台需要知道你的分享结果,那么,就在回调里面调用上传到服务器结果的请求即可

  5. webView和js交互

    与 js 交互 OC 调用 JS // 执行 js - (void)webViewDidFinishLoad:(UIWebView *)webView { NSString *title = [web ...

  6. 李洪强iOS经典面试题147-WebView与JS交互

    李洪强iOS经典面试题147-WebView与JS交互   WebView与JS交互 iOS中调用HTML 1. 加载网页 NSURL *url = [[NSBundle mainBundle] UR ...

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

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

  8. iOS与JS交互实战篇(ObjC版)

    前言 ObjectiveC与Js交互是常见的需求,可对于新手或者所谓的高手而言,其实并不是那么简单明了.这里只介绍iOS7.0后出来的JavaScriptCore framework. 关于JavaS ...

  9. Android WebView加载本地html并实现Java与JS交互

    最近做的一个项目中,用到自定义地图,将自定义地图转换成html页面,现在需要做的是如何将本地的html加载到android中,并可以实现交互. 相关讲解: 其实webview加载资源的速度并不慢,但是 ...

随机推荐

  1. fastjson排序 Map多层嵌套转换自动排序问题终极解决方案

    阅读更多 最近项目中用到了fastjson(1.2.15)需要将前端多层嵌套json转换为map,由于map的无序性,想了很多办法,最终找到使用 Map m= JSONArray.parseObjec ...

  2. 事件处理之一:两种方式:监听器与回调 分类: H1_ANDROID 2013-10-31 10:26 3250人阅读 评论(0) 收藏

    Android组件的事件处理有2种方式: 1.基于监听器的事件处理方式:先定义组件,然后为组件设定监听器. 详见http://blog.csdn.net/jediael_lu/article/deta ...

  3. 手动打war包进行部署测试

    有的时候项目跑不起来但是又不知道tomcat问题还是其他问题,往往新建个项目,打成war进行部署.今天找到个好方法,手动打成war,然后进行部署测试. image.png image.png 创建一个 ...

  4. 【54.08%】【BZOJ 1941】Hide and Seek

    Time Limit: 16 Sec  Memory Limit: 162 MB Submit: 919  Solved: 497 [Submit][Status][Discuss] Descript ...

  5. 华为上机试题(java)

    一.题目描述:通过键盘输入一串小写字母(a~z)组成的字符串.请编写一个字符串过滤程序,若字符串中出现多个相同的字符,将非首次出现的字符过滤掉.比如字符串“abacacde”过滤结果为“abcde”. ...

  6. 应用:udp聊天器

    说明 在一个电脑中编写1个程序,有2个功能 1.获取键盘数据,并将其发送给对方 2.接收数据并显示 并且功能数据进行选择以上的2个功能调用 要求 实现上述程序 参考代码 import socketde ...

  7. 让Apache 和nginx支持跨域訪问

    1,怎样让Apache支持跨域訪问呢? 步骤: 改动httpd.conf,windows中相应的文件夹是:C:\wamp\bin\apache\Apache2.4.4\conf\httpd.conf ...

  8. 简洁常用权限系统的设计与实现(三):维护和利用节点的深度level,迭代实现树的构造

    如果在节点的属性中,增加一个level属性,即树的深度,构造树会非常容易.前提是,增加和修改节点的时候,要维护level. 根节点的level为1,下一级为2,以此类推. 构造树的方法,主要有2个: ...

  9. QQ欢乐豆斗地主心得体会(四):合谋赢豆

    刚刚又在玩QQ欢乐斗地主,只可惜,这次不够欢乐. 本金,300万豆,运气比较好,赢到将近400万.突然,形势急转直下,一直输,一直到180多万豆.本来这一局,有硬炸在手,但是没有癞子,基本被吊打的节奏 ...

  10. 【codeforces 779A】Pupils Redistribution

    [题目链接]:http://codeforces.com/contest/779/problem/A [题意] 让你把两个组的5个人的数目都变成一样的. 支持交换操作; 问你最少需要交换几次. [题解 ...