如何在 WPF 中使用 CEFSharp JavascriptObjectRepository
How to using CEFSharp JavascriptObjectRepository in WPF
我想要得到 javascript 响应,
然后按照cef文档去做,
这是我的一步,
首先创建一个html文件
...
<button onclick='test()'>click</button>
...
<script>
function test(){
alert('123');
callbackObj.getMessage('123');
}
</script>
然后我注册javascript回复方式
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
this.MyBrowser.JavascriptObjectRepository.Register("callbackObj", new PagaJavaScriptResponse(), true);
并创建 class 来执行 PagaJavaScriptResponse
public class PagaJavaScriptResponse
{
public void getMessage(string s)
{
....
}
}
下一步检查寄存器是否绑定
var isBound = this.MyBrowser.JavascriptObjectRepository.IsBound("callbackObj");
结果为真,
最后一步 url http://127.0.0.1/index.html
this.MyBrowser.Address = @"http://127.0.0.1:8887/test.html";
这里我认为当我点击按钮时它应该是 return 123 我在 C# 中的方法,但不是,
热对吗?
我尝试一个解决方案
在页面加载时执行此 javascript
this.MyBrowser.WebBrowser.ExecuteScriptAsyncWhenPageLoaded(@"(async function() {await CefSharp.BindObjectAsync('callbackObj', 'bound');})();");
它会起作用
我想要得到 javascript 响应,
然后按照cef文档去做,
这是我的一步,
首先创建一个html文件
...
<button onclick='test()'>click</button>
...
<script>
function test(){
alert('123');
callbackObj.getMessage('123');
}
</script>
然后我注册javascript回复方式
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
this.MyBrowser.JavascriptObjectRepository.Register("callbackObj", new PagaJavaScriptResponse(), true);
并创建 class 来执行 PagaJavaScriptResponse
public class PagaJavaScriptResponse
{
public void getMessage(string s)
{
....
}
}
下一步检查寄存器是否绑定
var isBound = this.MyBrowser.JavascriptObjectRepository.IsBound("callbackObj");
结果为真,
最后一步 url http://127.0.0.1/index.html
this.MyBrowser.Address = @"http://127.0.0.1:8887/test.html";
这里我认为当我点击按钮时它应该是 return 123 我在 C# 中的方法,但不是,
热对吗?
我尝试一个解决方案
在页面加载时执行此 javascript
this.MyBrowser.WebBrowser.ExecuteScriptAsyncWhenPageLoaded(@"(async function() {await CefSharp.BindObjectAsync('callbackObj', 'bound');})();");
它会起作用