2

J'implémente hybridWebView dans notre application de formulaires xamarin. Le problème que j'ai rencontré est que l'hybridWebView n'affiche pas les messages d'alerte du site Web qui est dans le webView. Je viens d'une simple page html qui a la fonction js suivante:XLabs.Forms.Controls.HybridWebView n'affiche pas html/js Alerte

function testAlert() { 
    alert('tester'); 
} 

Quand j'appelle cela en utilisant rien CallJsFunction se produit. Je sais que ça se déclenche parce que si je mets quelque chose d'autre dans la fonction pour dire mettre à jour le code HTML sur la page, il se déclenche très bien.

Y a-t-il des propriétés que je dois définir pour afficher les alertes dans la vue. Je sais que le webview des formulaires Xamarin affiche des alertes très bien.

+0

Pourriez-vous s'il vous plaît ajouter votre code pour afficher votre HybridWebView dans XLabs? En outre, rencontrez-vous le problème sur iOS et Android? – Demitrian

Répondre

1

J'ai créé un sample on GitHub qui fait essentiellement ce que vous voulez de deux manières lors de l'utilisation HybridWebView pour XLabs:

  1. exécution de la méthode CallJsFunction() (lié à l'événement Clicked d'un Button vu here)
  2. Utilisant la méthode InjectJavaScript() (liée à l'événement Clicked d'un Button vu here)
  3. Remplacement OnAppearing pour le ContentPage, puis appeler LoadFromContent() avec une page .html simples sont tous deux stockés localement pour iOS et Android

Comme note, je devais créer une dépendance appelée FilePath pouvoir récupérer le chemin vers le fichier .html pour les deux Android et iOS car les systèmes de fichiers sont différents.

Cette approche a bien fonctionné pour Android, mais pas pour iOS. Moi, tout comme vous, je n'ai vu aucune alerte. Pour cette raison, j'ai créé un problème sur le Github Issue Tracker for XLabs. Je sais que ce n'est pas grand chose en ce moment, mais j'espère qu'ils vont revenir avec une solution. Sinon, il devrait être possible de simplement changer leur Renderer personnalisé pour le HybridWebView pour iOS et ainsi résoudre le problème.