#cefsharp
#cefsharp
Вопрос:
Я использую приведенный ниже код, чтобы попытаться связать класс c #, который был зарегистрирован, но не вижу «dwgData» нигде в области видимости при отладке веб-страницы. К чему будут привязаны dwgData?
private void ChromiumBrowserForm_Load(object sender, EventArgs e)
{
CefSettings settings = new CefSettings();
ChromiumWebBrowser browser = new ChromiumWebBrowser("http://localhost:3000");
this.Controls.Add(browser);
browser.Dock = DockStyle.Fill;
browser.JavascriptObjectRepository.Register("dwgData", new DwgData(), true, null);
browser.IsBrowserInitializedChanged = Browser_IsBrowserInitializedChanged;
browser.LoadingStateChanged = Browser_LoadingStateChanged;
}
private async void Browser_LoadingStateChanged(object sender, LoadingStateChangedEventArgs e)
{
ChromiumWebBrowser browser = (ChromiumWebBrowser)sender;
if (e.IsLoading == false)
{
await Task.Run(() => browser.ExecuteScriptAsync("CefSharp.BindObjectAsync("dwgData");"));
}
}
private void Browser_IsBrowserInitializedChanged(object sender, EventArgs e)
{
ChromiumWebBrowser browser = (ChromiumWebBrowser)sender;
if (browser.IsBrowserInitialized)
{
browser.ShowDevTools();
}
}
public class DwgData
{
public void showMessage()
{
MessageBox.Show("HELLO FROM JS");
}
}
Комментарии:
1. Объект создается в глобальной области видимости, поэтому у вас должны быть window.dwgData
2. Спасибо, это то, чего мне не хватало