gpt4 book ai didi

javascript - 从 CefSharp 1 中的 javascript 调用 .Net - wpf

转载 作者:可可西里 更新时间:2023-11-01 02:13:52 26 4
gpt4 key购买 nike

我刚刚学习 C# WPF 并已成功实现 CefSharp,如何从 CefSharp 中加载的 javascript 调用 .NET 函数?

最佳答案

由于从 63.0.0 开始的 Chromium 更改,Javascript 绑定(bind) 发生了重大更改。遗留行为仍然适用于单页应用程序,并且只使用一个域。

新绑定(bind)方式

新的绑定(bind)方法有很多优点:

  • 按名称绑定(bind)和取消绑定(bind)对象
  • 将对象的子集绑定(bind)到不同的页面(包括弹出窗口)
  • 删除/解绑一个方法
  • 动态解析绑定(bind)对象

简单的例子:

public class BoundObject {
public void showMessage(string msg) {
MessageBox.Show(msg);
}
}

browser.JavascriptObjectRepository.Register("boundAsync", new BoundObject(), true);

<script type="text/javascript">
(async function() {
await CefSharp.BindObjectAsync("boundAsync", "bound");

boundAsync.showMessage('Message from JS');
})();
</script>

有关更多详细信息,请访问 Javascript Binding v2 #2246How do you expose a .NET class to JavaScript?

遗留绑定(bind)

如果您执行跨站点导航,您将无法再使用此方法绑定(bind)对象。

在注册第一个对象 (RegisterAsyncJsObject) 之前,您需要设置 CefSharpSettings.LegacyJavascriptBindingEnabled = true

简单的例子:

public class BoundObject {
public void showMessage(string msg) {
MessageBox.Show(msg);
}
}

CefSharpSettings.LegacyJavascriptBindingEnabled = true;
browser.RegisterAsyncJsObject("boundAsync", new BoundAsyncObject());

<script type="text/javascript">
boundAsync.showMessage('Message from JS');
</script>

有关更多详细信息,请访问 Javascript Binding v2 #2246How do you expose a .NET class to JavaScript?

关于javascript - 从 CefSharp 1 中的 javascript 调用 .Net - wpf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23425059/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com