ОК, так что это работает на 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 и поймай его в моем рендерере.