2016-07-15 14 views
0

In meiner JS-Datei habe ich handleMessage (Nachricht) Funktion. Das Nachrichtenargument sieht wie "background =/path;" aus.UWP Webview InvokeScriptAsync übergibt falsches Argument an JS-Funktion

Problem ist, dass wenn ich InvokeScriptAsync ("handle" nennen, new [] { "background =/path";} ich eine "allgemeine" als Argument in JavaScript nur bekam

Wenn ich ersetzen. „Hintergrund“, um etwas anderes der Parameter in JS wird als korrekt. Dieses Problem for mobile nur gültig ist. ich habe keine Probleme auf dem Desktop.

+0

können Sie eval aufrufen. Etwas wie: 'InvokeScriptAsync (" eval ", neu [] {" handleMessage ('background =/path;') "};' –

+0

Ich bekomme jetzt auch eine "allgemeine" Zeichenfolge als Parameter auf dem Desktop. – ger18s

Antwort

0

ich habe gerade einen „General“ als Argument in JavaScript.

Ich bin neugierig, woher weißt du, dass du einen "General" hast, hast du deine message auf deinem HTML ausgegeben? Es sieht so aus, als ob Sie einen Dateipfad zum background festgelegt haben. Ein Problem hierbei ist, ob der Dateipfad in einer UWP-App legal ist, da die UWP-App in Sandbox funktioniert. Einige Pfade, die in klassischen Desktop-Apps verwendet werden, können nicht verwendet werden UWP.

Ich kann nicht reproduzieren Ihre Problembasis auf Ihrem Posed Code sowohl in UWP App und WP8.1 App, ich nahm nur an, dass Sie ein Bild auf den Hintergrund eines Elements festlegen möchten. Hier ist ein Beispiel:

<!DOCTYPE html> 
<html> 
<head> 
    <meta charset="utf-8" /> 
    <title>WebViewInvoke</title> 
    <link href="css/default.css" rel="stylesheet" /> 
    <script type="text/javascript"> 
     function handleMessage(message) { 
      var element = document.getElementById("textbody"); 
      element.style.background = message; 
     } 
    </script> 
</head> 
<body id="textbody" style="color:black; background:url('Assets/1.jpeg')"> 
    <div>Content goes here!</div> 
    <script src="js/main.js"></script> 
</body> 
</html> 

Dies ist meine HTML-Datei und wie man sehen kann ich die Funktion handleMessage innerhalb dieser HTML-Datei aufrufen, ist es das gleiche, wenn Sie diese Funktion in die js-Datei setzen. So

wenn InvokeScriptAsync Methode aufrufen, können wir Uri nutzen das Image des Pfad zu erhalten, wie folgend:

string[] specs = { "url('Assets/2.jpeg')" }; 
await webView.InvokeScriptAsync("handleMessage", specs); 

Grundsätzlich ist die Hauptidee dabei ist, dass Sie versuchen können, Uri zu verwenden, um Ihre path zu ersetzen, und meine Bilder werden im Ordner Assets des Projekts gespeichert. Wenn Sie hier eine Frage haben, aktualisieren Sie bitte Ihren Code und hinterlassen Sie einen Kommentar.

+0

Danke! " General "String war mein Fehler (wir hatten einige JS-Code, der Windows-Phone spezifisch war und diese seltsamen Dinge getan hat.) Aber wir ersetzt Pfad mit" URL "und es half. – ger18s

+0

@ ger18s, es ist OK, Gern geschehen!;) –

Verwandte Themen