cefsharp ExecuteScriptAsync(json)uri太长了

时间:2017-03-07 20:40:17

标签: javascript jquery vb.net winforms cefsharp

我在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传递给浏览器。

由于

1 个答案:

答案 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

希望它有所帮助!