将Cefsharp版本从v。57更新到75.1.143版本时,CefSharp的注册JS方法更改

问题描述 投票:0回答:1

我们在我们的应用程序中使用了cefsharp版本57.0,并且一切正常。但是现在由于某些限制,我们需要将cefsharp版本更新为75.1.143,突然我们的工作代码中断了。一项更改是将LegacyJavascriptBindingEnabled更改为true,然后此行中断了:

browser.RegisterJsObject("objectForCallingServerSideMethods", this);

产生错误System.ArgumentException:不支持注册内置类型的.Net框架,如果需要访问窗口/窗体/控件,则创建自己的对象并代理调用。参数名称:值。一切都很好。我不知道该如何处理。这里是示例代码,在更新之前可以运行。

        Cef.Initialize(new CefSettings() { IgnoreCertificateErrors = true, PersistSessionCookies = true, CachePath = LocalFolderPath + "/cache" });
        CefSharpSettings.ShutdownOnExit = true;
        CefSharpSettings.LegacyJavascriptBindingEnabled = true; // added now for version 75.1.143
        browser = new ChromiumWebBrowser("url goes here");

        browser.DownloadHandler = new DownloadHandler();
        browser.Width = 0;
        browser.Height = 0;

        browser.MenuHandler = new CustomContextHandler();

        this.Controls.Add(browser);

        browser.LoadingStateChanged += Browser_LoadingStateChanged;
        browser.RegisterJsObject("objectForCallingServerSideMethods", this); // this line is throwing exception now. screenshot is attached.

enter image description here

我们在我们的应用程序中使用了cefsharp版本57.0,并且一切正常。但是现在由于某些限制,我们需要将cefsharp版本更新为75.1.143,突然我们的工作代码中断了。 ...

c# winforms cefsharp
1个回答
0
投票

我已经找到了解决方案。我将winform对象传递为“ this”,在版本75.1.143中,它们更改了实现,现在我们不能使用Window / Form / Control。我创建了另一个名为“ BoundObject”的类,并传递了它的对象,它按预期工作。

© www.soinside.com 2019 - 2024. All rights reserved.