2017-03-07 48 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

希望它有幫助!