2017-01-29 5 views
0

Ich versuche, webview element in einer universellen App mit Javascript zu verwenden. Mein Ziel ist es, einige Websites zu durchsuchen, die eigene Inhalte zu ihrem HTML-Dokument hinzufügen.UWP: webview zeigt keine Seite mit navigateToString-Methode

Zuerst setze ich src Attribut von webview zu www.example.com und es durchsucht die Website. Dies war nur um sicherzustellen, dass die Webansicht die Website durchsuchen kann.

Als nächstes versuchte ich immer die html und laden Sie es navigateToString Methode wie folgt zur Webansicht mit:

$.get(url, function (data) { 
     webView.navigateToString(data); 
    }); 

Dies bewirkt, dass die Seite aus der Form geladen wird (aperarently einige Js oder CSS-Dateien nicht geladen werden oder blockiert ist), oder es ist nicht einmal geladen.

Ich frage mich, was ist der Unterschied Laden der Seite durch seine URL und Laden ihrer HTML manuell so. Und gibt es einen Workaround, kann ich dieses Problem überwinden.

Hinweis: Ich bin neu bei beiden js und html.

+1

Verwenden die css- und js-Dateien, auf die im heruntergeladenen hml verwiesen wird, einen relativen oder absoluten Pfad? Ich würde nicht erwarten, dass der relative Pfad funktioniert, wenn Sie die HTML-Zeichenfolge im webview-Steuerelement anzeigen. –

Antwort

1

Eine Webseite besteht normalerweise nicht aus einer einzelnen HTML-Datei. Damit es funktioniert, müssen Sie den HTML-Code, aber auch die Javascript- und CSS-Dateien abrufen. Dies kann eine langwierige Arbeit sein.

Wenn Sie versuchen, etwas aus dem Internet zu öffnen, ist der einfachste Weg, einen normalen navigate() durchzuführen, der den URI als Parameter verwendet und eine "vollständige" Suche durchführt (wie der Browser es tut). Das Abrufen/Laden der CSS/JS erfolgt für Sie.

Wenn Sie eine lokale Seite (lokal für Ihre Anwendung) öffnen möchten, ist navigateToString() ein guter Pfad, aber Sie müssen lokal alle Seitenabhängigkeiten (css/js fiels) hosten oder den ganzen Stil und Code in die eingebettete HTML-Seite selbst

+0

Aber wenn ich die navigate() -Methode verwende, kann ich das durchsuchte Dokument nicht ändern, oder? –

+0

Sie können den Seitencode nicht direkt ändern, aber da es sich um eine Webansicht handelt, können Sie immer noch invokeScriptAsync() verwenden, um JavaScript auszuführen, das die Seite ändert. – Vincent

+0

Ja, aber die Funktion invokeScriptAsync() erfordert die aufgerufene Skriptfunktion definiert im HTML-Dokument. Weil ich HTML-Dokument nicht ändern kann, habe ich nicht meine Skriptfunktionen darin zu nennen. Kennst du einen Weg, wie ich mein Skript an eine HTML-Datei anhängen kann, die nicht von mir erstellt wurde? –