2016-07-15 1 views
0

Dans mon fichier JS j'ai handleMessage (message) fonction. L'argument du message ressemble à "background =/path;".UWP Webview InvokeScriptAsync passe un mauvais argument à la fonction JS

Le problème est que quand je l'appelle InvokeScriptAsync ("handleMessage", nouveau [] { "background =/path";} Je viens de recevoir un "général" comme argument en JavaScript

Si je remplace. « fond » à quelque chose d'autre le paramètre JS va être correct. Ce numéro est valable uniquement pour mobile. Je n'ai pas des questions sur le bureau.

+0

vous pouvez appeler eval. Quelque chose comme: 'InvokeScriptAsync (" eval ", nouveau [] {" handleMessage ('background =/chemin;') "};' –

+0

Je reçois maintenant une chaîne "générale" en tant que paramètre sur le bureau – ger18s

Répondre

0

Je viens de recevoir un « général » comme argument en JavaScript.

Je suis curieux comment avez-vous su que vous avez obtenu un "général", avez-vous sorti votre message sur votre code html? Il semble que vous définissiez un chemin d'accès au background, un problème est de savoir si le chemin du fichier est légal dans une application UWP, puisque l'application UWP fonctionne dans le sandbox, certains chemins pouvant être utilisés dans les applications classiques ne peuvent pas être utilisés. UWP.

Je ne peux pas reproduire votre base d'émission sur votre code à la fois dans l'application UWP et l'application WP8.1, je suppose que vous voulez définir une image à l'arrière-plan d'un élément. Voici un exemple:

<!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> 

Ceci est mon fichier html et comme vous pouvez le voir, j'appeler la fonction handleMessage dans ce fichier html, il est le même si vous mettez cette fonction dans le fichier js.

Donc lorsque vous appelez la méthode InvokeScriptAsync, nous pouvons utiliser Uri pour obtenir le chemin de l'image de la manière suivante:

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

Fondamentalement, l'idée principale est ici que vous pouvez essayer d'utiliser Uri pour remplacer votre path et mes images sont enregistrés dans le dossier Assets du projet. Si vous avez des questions ici, s'il vous plaît mettre à jour votre code et laisser un commentaire.

+0

Merci! " "chaîne générale" était mon erreur (nous avions du code JS qui était spécifique à Windows Phone et qui faisait ces choses étranges) .Mais nous avons remplacé le chemin par "url" et cela a aidé: – ger18s

+0

@ ger18s, c'est bon, je vous en prie!) –