zoukankan      html  css  js  c++  java
  • WPF 实现 Chrome 内核的 Webbrowser

    1. 使用 Nuget 添加 cefsharp.wpf 库

    2. 窗口中使用

    1
    2
    3
    xmlns:chrome="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
     
    <chrome:ChromiumWebBrowser x:Name="wbrReport"/>

    3. 打开指定的 URL

    1
    2
    // 加载 URL
    this.wbrReport.Address = "www.baidu.com";

    4. Cefsharp.wpf 给 javascript 提供接口

      1. 设置外部调用的对象

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public class NtstJSObject
    {
        /// <summary>
        /// 提供给 Javascript 的对象
        /// </summary>
        public static string ExportedJavascriptOjbectName = "ntst";
     
        private ReportWindow _reportWindow = null;
        public NtstJSObject(ReportWindow reportWindow)
        {
            this._reportWindow = reportWindow;
        }
     
        /// <summary>
        /// 提供给 Javascript 调用的 closeWindow 接口
        /// </summary>
        public void closeWindow()
        {
            if(this._reportWindow != null)
            {
                this._reportWindow.CloseWindow(this);
            }
        }
    }

      2. 窗体构造函数中绑定 js 对象

    1
    2
    3
    4
    // 绑定 Javascript 调用对象
    CefSharpSettings.WcfEnabled = true;
    this.wbrReport.JavascriptObjectRepository.Settings.LegacyBindingEnabled = true;
    this.wbrReport.JavascriptObjectRepository.Register(NtstJSObject.ExportedJavascriptOjbectName, new NtstJSObject(this), false, BindingOptions.DefaultBinder);

      3. 窗口提供真正调用接口

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    /// <summary>
    /// Javascript 接口:closeWindow
    /// </summary>
    /// <param name="ntstJSObject"></param>
    public void CloseWindow(NtstJSObject ntstJSObject)
    {
        if(this._logger != null)
        {
            this._logger.WriteInformation(string.Format("Javascript call to: {0}", nameof(CloseWindow)));
        }
     
        this.Dispatcher.Invoke(new Action(() =>
        {
            this.Close();
        }));
    }

      4. Javascript 调用方式

    1
    ntst.closeWindow()
  • 相关阅读:
    85. Maximal Rectangle
    120. Triangle
    72. Edit Distance
    39. Combination Sum
    44. Wildcard Matching
    138. Copy List with Random Pointer
    91. Decode Ways
    142. Linked List Cycle II
    异或的性质及应用
    64. Minimum Path Sum
  • 原文地址:https://www.cnblogs.com/simadi/p/15237831.html
Copyright © 2011-2022 走看看