zoukankan      html  css  js  c++  java
  • C# Cef winform 脚本的执行 踩过的坑

    先从后端代码 如何执行js 代码谈起;

    一个简单的需求: 在winform上点击一个按钮,实现登录信息的填入

    流程: 就是让C#去运行一段脚本,.

    运行的方式有两种, 异步与同步, 

    因为CEF是一帧一帧运行的,所有需要指定这段js 在哪个frame 里面运行

    方法1: CefWebBrowser.GetBrowser().GetFrame("mem_index").ExecuteJavaScriptAsync("you js code")

    执行脚本都是在 Frame 之下 执行的

    方法2: e.Frame.ExecuteJavaScriptAsync("you js code")


    CefWebBrowser.GetBrowser().GetFrame("mem_index").ExecuteJavaScriptAsync(a);

    CefWebBrowser.ExecuteScriptAsync(a);

    这两者之间的区别是,操作的dom 对象不同, 面对不同的iframe 就有不同的 js 代码执行,  并且,执行多行代码时,就需要将多行代码放在只执行闭包函数里面,(function(){ ..... })()  只有这样才成功执行。

    // 在此进行区分
    if (e.Url.Contains("/entrance/page/soya"))
    { // 登录页面
    //chromiumBrowser.("mem_index").EvaluateScriptAsync(Resources.loginjs);
    chromiumBrowser.GetBrowser().GetFrame("mem_index").ExecuteJavaScriptAsync(Resources.loginjs);
    // 多个框架之下,一定要指定名称 来执行脚本
    //chromiumBrowser.ExecuteScriptAsyncWhenPageLoaded(Resources.loginjs);

    }

    关于在前端注入对象


    其他说明
    以目前版本为准,注入C#类到WEB页面中的方式有如下2种。

    var _chromiumWebBrowser = new ChromiumWebBrowser();
    // 反正你先初始化这玩意
    // ...

    // 1. 旧版本的注入方式,从后端到前端,官方不建议使用
    CefSharpSettings.LegacyJavascriptBindingEnabled = true; //首先打开开关(老东西)
    _chromiumWebBrowser.RegisterJsObject("testold", new TestClass());

    // 2. 新版本的注入方式,从前端到后端,官方推荐,可用于多页面
    _chromiumWebBrowser.JavascriptObjectRepository.ResolveObject += (s, eve) =>
    {
    var repo = eve.ObjectRepository;
    if (eve.ObjectName == "testnew") //这个名字对应页面上 CefSharp.BindObjectAsync('testnew') 部分
    {
    repo.Register("testnew", new TestClass(), isAsync: true, options: BindingOptions.DefaultBinder);
    }
    };

  • 相关阅读:
    WP&Win10仿微信消息框代码分享
    Windows编程中回调函数的使用心得(MFC篇)
    进程间通信之WM_COPYDATA方式反思,回顾和总结
    华为的最新的两道算法设计题
    Python中3元运算符的实现
    Python Logging 模块研究
    LINUX下CPU Load Average的一点研究
    64位系统下,一个32位的程序究竟可以申请到多少内存,4GB还是更多?(一)
    Pyscripter 不能正确调用另一文件中模块的问题的解析(Internal Engine 和 Remote Engine)
    Django 最佳实践
  • 原文地址:https://www.cnblogs.com/aashui/p/12043576.html
Copyright © 2011-2022 走看看