我在winForm应用程序中使用cefSharp。 我想从winform传递一个长json到cefSharp显示的html页面。 我试着写下面的内容:
Private WithEvents m_chromeBrowser As ChromiumWebBrowser
...
CefSharp.Cef.Initialize()
page = New Uri("www...")
m_chromeBrowser = New ChromiumWebBrowser(page.ToString)
Panel.Controls.Add(m_chromeBrowser)
...
Dim json as String = "[{code:1,name:a,val:0},{...}....]"
m_chromeBrowser.ExecuteScriptAsync("functionName('" & json & "');")
但我一直收到以下错误:
Request-URI太长
你知道如何将long json从winform传递给浏览器。
由于
答案 0 :(得分:0)
那么,最好通过注册AsyncJSObject将.Net类暴露给JavaScript,从JavaScript执行类方法并解析返回结果。
这样的事情:
public class CallbackObjectForJs {
public string getJson() {
return myJsonString;
}
}
...然后注册课程:
_webBrowser.RegisterAsyncJsObject(
"Browser",
new CallbackObjectForJs(),
BindingOptions.DefaultBinder);
...最后从Javascript调用该方法并使用promise来获得结果:
Browser.getJson().then((result) => {
var myJsonString = JSON.parse(result);
console.log(myJsonString);
});
您可以在此处详细了解: https://github.com/cefsharp/CefSharp/wiki/General-Usage#3-how-do-you-expose-a-net-class-to-javascript
希望它有所帮助!