2017-03-07 3 views
0

Ich verwende cefSharp in meiner winForm-Anwendung. Ich möchte einen langen JSON von meinem WinForm an die HTML-Seite übergeben, die von der CefSharp angezeigt wird. Ich habe versucht, die folgenden zu schreiben:cefsharp ExecuteScriptAsync (json) uri zu lang

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 & "');") 

Aber ich bekomme immer folgende Fehlermeldung:

Request-URI Too Long

Haben Sie eine Ahnung, wie lange json von winform zu Browser zu übergeben.

Dank

Antwort

0

Nun, würden Sie einen AsyncJSObject durch die Registrierung, führen Sie die Klassenmethode von JavaScript und analysieren, um die Rückkehr Ergebnis einer .NET-Klasse JavaScript besser dran auszusetzen.

Etwas wie folgt aus:

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

... dann die Klasse registrieren:

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

... und schließlich die Methode von Javascript aufrufen und ein Versprechen verwenden, um das Ergebnis zu erhalten:

Browser.getJson().then((result) => { 
    var myJsonString = JSON.parse(result); 
    console.log(myJsonString); 
}); 

Sie können mehr darüber lesen Sie hier: https://github.com/cefsharp/CefSharp/wiki/General-Usage#3-how-do-you-expose-a-net-class-to-javascript

Hoffe es hilft!