Связь между Javascript и собственным кодом WebView в Xamarin.Forms iOS - PullRequest
0 голосов
/ 21 апреля 2020

ОК, так что это работает на Android ... Я застрял на iOS.

У меня есть пользовательский HTML WebView, который имеет событие JavaScript:

const string html= @"<button type=""button"" onClick=CSharp.SendButton(' + buttonCode + ')"">Click here</button>";

В Android у меня есть пользовательский рендерер для веб-просмотра:

protected override void OnElementPropertyChanged(object sender, PropertyChangedEventArgs e)
{
    if (Control != null)
    {
        Control.Settings.JavaScriptEnabled = true;
        Control.AddJavascriptInterface(new JSBridge(Forms.Context), "CSharp");
    }
    base.OnElementPropertyChanged(sender, e);
}

И JSBridge - это мост между Javascript и C#:

public class JSBridge : Java.Lang.Object
{
    Context context;

    public JSBridge(Context context)
    {
        this.context = context;
    }

    [Export]
    [JavascriptInterface]
    public void SendButton(string code)
    {
        // I can pass the buttonCode here
    }
}

Как можно Я делаю что-то похожее на iOS?

Обратите внимание: мне известны примеры HybridWebView на сайте Microsoft: я не хочу использовать отдельный файл Javascript, я хочу запустить событие из моего HTML и поймай его в моем рендерере.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...