2016-08-03 13 views
2

I-Code verwenden folgende Seite MyWebView zu laden:Xamarin Form webview Eval nicht aufrufen Javascript

private void DisplayLocalPage(string filename) 
{ 
    var html = new HtmlWebViewSource(); 
    html.BaseUrl = DependencyService.Get<IBaseUrl>().Get(); 
    html.Html = ReadFile(filename); 
    MyWebView.Source = html; 
    MyWebView.Eval("alert(200)"); 
} 

Seite ist gut gemacht - alle Skripte laufen auch, aber diese Warnung ausgelöst wird, nicht, was sind mögliche Gründe?

+0

Sie haben die Erlaubnis-Skripte ausführen lassen sollte. Funktioniert es, wenn Sie es in das Dokument ready-Ereignis von JS der geladenen Seite schreiben? –

+0

Ich habe die Warnung in onload von Körper und es funktioniert. – cuddlecheek

+0

Überprüfen Sie diesen Link: http://www.tipsabc.com/2016/xamarin-forms-communicate-javascript-webview-native-code/ –

Antwort

0

Ich denke, ich habe herausgefunden, warum es nicht funktioniert. Das Eval wird ausgelöst, bevor das WebView vollständig initialisiert oder die Webseite gerendert wird. Das Skript wird also trigeriert, hat jedoch keine Auswirkungen.

2

Bitte versuchen Sie dies:

webView.Navigated += (o, s) => { 
    webView.Eval("alert('text')"); 
    }; 
+0

eine Erklärung Ihrer Lösung ist in der Regel hilfreich – happymacarts

+0

@happymacarts die Erklärung ist in meiner Antwort. – cuddlecheek

+1

Sowohl @Kamil Smrčka und Kuschelkopf sind korrekt. Der Grund, warum JavaScript nicht ausgelöst wird, ist, dass die Seite nicht vollständig geladen wurde. Die Beschreibung in der Dokumentation (https://developer.xamarin.com/api/event/Xamarin.Forms.WebView.Navigated/) für das Ereignis Navigated lautet: "Ereignis, das nach Abschluss der Navigation ausgelöst wird." In der obigen Antwort abonniert Kamil das Ereignis Navigated (in diesem Fall das Ereignis zum Laden der Seite) und führt nach dem Feuern sein JavaScript aus. –