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

标签 javascript c# cefsharp

我刚刚学习 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/

相关文章:

wpf - 如何将 CefSharp 浏览器限制到给定域

c++ - 是否可以使用自己编译的 Chromium Embedded 来编译 CefSharp?

javascript - 如何在javascript中模拟输入元素的真实点击

javascript - 如何使我的代码在 javascript 中异步

javascript - getJSON 运行优先级

c# - 控制下载过程的信号量

C# 连接字符串问题。 EF 代码优先和数据库上下文

javascript - 如何通过碰撞检测更改 Canvas fillStyle?

javascript - 将 PHP 数组传递给 JavaScript?

c# - 此平台不支持 Diffie-Hellman 加密算法