2017-03-07 334 views
0

我在我的winForm应用程序中使用cefSharp。 我想从我的winform传递一个长json到由cefSharp显示的html页面。 我试着写:cefsharp ExecuteScriptAsync(json)uri太长

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 Too Long

你有任何想法如何从WinForm的通过长JSON到浏览器。

感谢

回答

0

那么,你会过得更好,通过注册一个AsyncJSObject暴露.NET类为JavaScript,执行从JavaScript类方法和解析返回结果。

事情是这样的:

public class CallbackObjectForJs { 
    public string getJson() { 
     return myJsonString; 
    } 
} 

...然后注册类:

_webBrowser.RegisterAsyncJsObject(
    "Browser", 
    new CallbackObjectForJs(), 
    BindingOptions.DefaultBinder); 

...终于从JavaScript调用的方法和使用的承诺得到结果:

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

希望它有帮助!