JS/.NET взаимодействует на Maui WebViewC#

Место общения программистов C#
Ответить
Anonymous
 JS/.NET взаимодействует на Maui WebView

Сообщение Anonymous »

Я мигрирую наше приложение из Xamarin в Мауи, и я немного борюсь с мигрированием кода, который обрабатывает взаимодействия JS/.NET в веб -просмотре как на Android, так и на iOS. Давайте сосредоточимся на Android. Особенно речь идет о вызове кода .NET из JS в WebView. -us/xamarin/xamarin-forms/app-fundamentals/custom-renderer/hybridwebview):

Код: Выделить всё

protected override void OnElementChanged(ElementChangedEventArgs e)
{
base.OnElementChanged(e);

if (e.OldElement != null)
{
Control.RemoveJavascriptInterface("jsBridge");
}

if (e.NewElement != null)
{
Control.SetWebViewClient(new JavascriptWebViewClient(this, $"javascript: {JavascriptFunction}"));
Control.AddJavascriptInterface(new JsBridge(this), "jsBridge");
}
}
< /code>
и < /p>
public class JavascriptWebViewClient : FormsWebViewClient
{
private readonly string javascript;

public JavascriptWebViewClient(HybridWebViewRenderer renderer, string javascript) : base(renderer)
{
this.javascript = javascript;
}

public override void OnPageFinished(WebView view, string url)
{
base.OnPageFinished(view, url);
view.EvaluateJavascript(javascript, null);
}
}
< /code>
В .net 6 с Maui это устарело. Я пытался построить его с помощью обработчиков, но затем невозможно вызвать onpagefine 
. Отсутствие примеров затрудняет выяснение того, что я скучаю. < /P>
Microsoft.Maui.Handlers.WebViewHandler.Mapper.AppendToMapping("MyCustomization", (handler, view) =>
{
#if ANDROID
handler.PlatformView.SetWebViewClient(new JavascriptWebViewClient($"javascript: {JavascriptFunction}"));
handler.PlatformView.AddJavascriptInterface(new JsBridge(this), "jsBridge");
#endif
});
< /code>
с < /p>
public class JavascriptWebViewClient : WebViewClient
{
private readonly string javascript;

public JavascriptWebViewClient(string javascript) : base()
{
this.javascript = javascript;
}

public override void OnPageFinished(WebView view, string url)
{
base.OnPageFinished(view, url);
view.EvaluateJavascript(javascript, null);
}
}
< /code>
Куда мне поместить этот код? Это правильный путь? Что мне не хватает? Теперь я поместил это в подклассный веб -просмотр, но, вероятно, это не правильно.

Подробнее здесь: https://stackoverflow.com/questions/732 ... ui-webview
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»