我正在寻找一种方法来运行我的 Angular2
申请 CefSharp
控制并建立双向通信。让我举两个例子:
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/