Я последовал примеру xamarin pcl hybridwebview для вызова C # из JavaScript.
Я также хотел бы реализовать функцию для вызова JavaScript из C #.
Iпопытался использовать webview.Eval (script) поверх примера hybridwebview, однако он не запускает JavaScript в веб-просмотре.Я также пробовал веб-просмотр без пользовательского рендера, и он работает нормально.
Невозможно использовать Eval в случае Webview CustomRenderer ..?
Мой CustomerRender:
public class HybridWebView : WebView
{
Action<string> action;
public static readonly BindableProperty UriProperty = BindableProperty.Create (
propertyName: "Uri",
returnType: typeof(string),
declaringType: typeof(HybridWebView),
defaultValue: default(string));
public string Uri {
get { return (string)GetValue (UriProperty); }
set { SetValue (UriProperty, value); }
}
public void RegisterAction (Action<string> callback)
{
action = callback;
}
public void Cleanup ()
{
action = null;
}
public void InvokeAction (string data)
{
if (action == null || data == null) {
return;
}
action.Invoke (data);
}
}
Вызов Eval в ContentPage:
namespace CustomRenderer
{
public partial class HybridWebViewPage : ContentPage
{
public Func<string, Task<string>> EvaluateJavascript { get; set; }
public HybridWebViewPage ()
{
InitializeComponent ();
hybridWebView.RegisterAction (data => DisplayAlert ("Alert", "Hello " + data, "OK"));
}
private void Button_Clicked(object sender, System.EventArgs e)
{
var _Script = string.Format("alert('test')");
hybridWebView.Eval(_Script);
}
}
}