Выполнение метода Cefsharp .NET -> JS
Привет,
Я могу выполнить метод в моем VB.NET программа из ChromiumWebBrowser со следующим кодом;
Public Class Main Private WithEvents browser As New ChromiumWebBrowser(IO.Path.GetFullPath("Webpage/index.html")) With {.Dock = DockStyle.Fill} Private messageReceiver As New MessageReceiver(browser) Private Sub Main_Load(sender As Object, e As EventArgs) Handles MyBase.Load Controls.Add(browser) CefSharpSettings.LegacyJavascriptBindingEnabled = True browser.RegisterJsObject("messageReceiver", messageReceiver) End Sub End Class Public Class MessageReceiver Private browser As ChromiumWebBrowser Public Sub New(ByRef browser As ChromiumWebBrowser) Me.browser = browser End Sub Public Sub browserToProgram(msg As String) ' MsgBox(msg,, "browserToProgram") End Sub Public Sub send(msg As String) browser.ExecuteScriptAsync("alert(" & msg & ")") ' would normally be programToBrowser(msg) End Sub End Class
function browserToProgram(msg) { (async function() { await CefSharp.BindObjectAsync('messageReceiver', 'bound'); messageReceiver.browserToProgram(msg); })(); }
Однако я не могу заставить его работать по-другому;
Private Sub browser_IsBrowserInitializedChanged(sender As Object, e As IsBrowserInitializedChangedEventArgs) Handles browser.IsBrowserInitializedChanged If e.IsBrowserInitialized Then Timer1.Start() End If End Sub Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick messageReceiver.send("Test from VB.NET") End Sub
function programToBrowser(msg) { alert(msg); }
Итак, VB.NET программа отображает messagebox (если я раскомментирую эту строку) при вызове JS
browserToProgram(x)
, но ничего не отображается на веб-странице, когда VB.NET звонки programToBrowser(x)
.Что я уже пробовал:
Комментируя это .Чистая стороне они приходят из многих источников, чтобы попытаться предотвратить временные проблемы с threadblocking
Вместо вызова метода JS просто вызовите 'alert(x)', чтобы устранить потенциальные проблемы с пользовательскими методами