User 13204940 Ответов: 0

Выполнение метода 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)', чтобы устранить потенциальные проблемы с пользовательскими методами

0 Ответов