angular - 在 CefSharp 中使用 Angular2

标签 angular chromium chromium-embedded cefsharp

我正在寻找一种方法来运行我的 Angular2申请 CefSharp控制并建立双向通信。让我举两个例子:

  • 我的 Angular 应用程序中有一个按钮,并希望我的 CefSharp 输出一个消息框(仅作为示例)。我知道如何进入 javascript 代码,但如果你从 C# 添加一个类,我无法编译我的 AngularApp,因为它不知道这一点。

  • C#代码:
    private void RegisterJsObjects()
    {           
        _browser.RegisterJsObject("cefTestClass", new TestClass());
    }
    
    class TestClass
    {
        public void csF(string message) 
        {
            MessageBox.Show(message, "#C", System.Windows.Forms.MessageBoxButtons.OK, System.Windows.Forms.MessageBoxIcon.Information);
        }
    }
    

    Angular 代码:
    <button (click) ="cefTestClass.csF('text')"> C# Button </button>
    

  • 我想调用Angular我的 CefSharp 中的函数应用程序,因为它们在编译后得到不同的名称,我无法访问它们。
  • 最佳答案

    注册对象绑定(bind)到javascript的window对象.你错过了window这个词在调用。你必须这样称呼它:

    <button (click) ="appComponentFunction()"> C# Button </button>
    

    在您的 AppComponent 中:
    appComponentFunction(){
        window['cefTestClass'].csF('text');
    }
    

    重要的是您注册对象的方法以小写字母开头,否则 javascript不执行它们。

    如果你想从 c# 调用一个 Angular 函数,你可以在你的 c#-class 中注册一个回调,如下所示:
    private IJavascriptCallback callback;
    
    public void registerCallback(IJavascriptCallback callback)
    {
        this.callback = callback;
    }
    

    现在您必须在您的 Angular 应用程序中定义您的回调(例如,在您的根组件中的 NgOnInit 中):
    window['cefTestClass'].registerCallback(function() {
      window.alert("Hallo");
    });
    

    现在您可以随时在 c# 中调用该函数:
    callback.ExecuteAsync();
    

    关于angular - 在 CefSharp 中使用 Angular2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48205905/

    相关文章:

    c# - chromium - 在初始页面加载时发送自定义 header 信息 c#

    javascript - Lodash - 显示对象的更改属性

    javascript - 如何在 Angular 4 中单击按钮时在不同窗口中显示 pdf 文件

    Chrome 的CSS字体系列问题

    linux - 选择嵌入式浏览器

    c# - 无法在 Chromium 嵌入式框架中播放视频 (mp4)

    angular - 是否可以通过使用另一个类中的变量在枚举(调用函数)中拥有计算属性?

    javascript - ionic : ERESOLVE could not resolve: Found: rxjs@7. x.x

    javascript - 屏幕阅读器无法读取 node-webkit 应用程序上的内容

    google-chrome - Google Chrome 和 Chromium 是否等同于网页设计/开发?