use*_*714 11 javascript c# cefsharp
我刚学习C#WPF并且已经成功实现了CefSharp,如何从javascript中调用.NET函数,这是在CefSharp中加载的?
Ole*_*lov 19
由于Chromium变化开始63.0.0有重大变化Javascript Binding.遗留行为仍适用于Single Page Applications且仅使用单个域的情况.
新的绑定方法有许多优点:
简单的例子:
public class BoundObject {
public void showMessage(string msg) {
MessageBox.Show(msg);
}
}
browser.JavascriptObjectRepository.Register("boundAsync", new BoundObject(), true);
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">
(async function() {
await CefSharp.BindObjectAsync("boundAsync", "bound");
boundAsync.showMessage('Message from JS');
})();
</script>
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请访问Javascript Binding v2#2246以及如何将.NET类暴露给JavaScript?
如果您执行跨站点导航,则将无法再使用此方法绑定对象.
您需要CefSharpSettings.LegacyJavascriptBindingEnabled = true在注册第一个对象(RegisterAsyncJsObject)之前进行设置.
简单的例子:
public class BoundObject {
public void showMessage(string msg) {
MessageBox.Show(msg);
}
}
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
browser.RegisterAsyncJsObject("boundAsync", new BoundAsyncObject());
Run Code Online (Sandbox Code Playgroud)
<script type="text/javascript">
boundAsync.showMessage('Message from JS');
</script>
Run Code Online (Sandbox Code Playgroud)
有关更多详细信息,请访问Javascript Binding v2#2246以及如何将.NET类暴露给JavaScript?
Wei*_* Ye 18
示例如下:
public class CallbackObjectForJs{
public void showMessage(string msg){//Read Note
MessageBox.Show(msg);
}
}
WebView webView = new WebView("http://localhost:8080");
webView.RegisterJsObject("callbackObj", new CallbackObjectForJs());
Run Code Online (Sandbox Code Playgroud)
前端的javascript代码:
<script type="text/javascript">
callbackObj.showMessage('message from js');
</script >
Run Code Online (Sandbox Code Playgroud)
注意:第一个字符不能位于CallbackObjectForJs的showMessage方法的上方
| 归档时间: |
|
| 查看次数: |
20744 次 |
| 最近记录: |