2016-07-15 21 views
0

私のJSファイルには、handleMessage(メッセージ)があります。 message引数は "background =/path;"のようになります。 私はJavaScriptで引数として "一般" を得たUWP Webview InvokeScriptAsyncがJS関数に間違った引数を渡します

私が交換した場合、

問題は、私は( "のhandleMessage"、新しい[] { "背景= /パス"} InvokeScriptAsyncを呼び出すときにということです。 JSでのパラメータが正しいことが起こっている何か他のものへの「バックグラウンド」。 この問題は、モバイルでのみ有効です。私は、デスクトップ上の何も問題はありません。

+0

あなたはevalを呼び出すことができます。何かのように: 'InvokeScriptAsync(" eval "、new [] {" handleMessage( 'background =/path;') "};' –

+0

私は今デスクトップ上のパラメータとして "一般的な"文字列を取得します – ger18s

答えて

0

は、私はちょうどJavaScriptで引数として「一般」を得ました。

私はあなたがあなたの "一般"を持っていることをどのように知っていたのですか?messageをあなたのhtmlに出力しましたか? backgroundにファイルパスを設定したようですが、UWPアプリがサンドボックスで動作するため、ファイルパスがUWPアプリで合法であるかどうかという問題があります。古典的なデスクトップアプリで使用できるいくつかのパスは使用できませんUWP。

UWPアプリとWP8.1アプリの両方であなたのposetedコードに問題ベースを再現することができません。私はちょうど要素の背景にイメージを設定すると仮定しました。ここではサンプルです:

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

これは私のhtmlファイルであり、あなたは、私は、このHTMLファイル内の機能handleMessageを呼び出す見ることができるようにあなたがJSファイルには、この機能を入れた場合、それは同じです。 InvokeScriptAsyncメソッドを呼び出すときに

だから、私たちは以下のように、画像のパスを取得するためにUriを使用することができます。

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

基本的にはここでの主なアイデアは、あなたのpathを置き換えるためにUriを使用しようとすることができるということです、そして私の画像プロジェクトのAssetsフォルダに保存されます。ここに質問がある場合は、コードを更新してコメントを残してください。

+0

ありがとう!一般的な "文字列は私の間違いでした(私たちはWindows Phoneに固有のJSコードをいくつか持っていましたが、これらの奇妙なことをしました)しかし、私たちはpathを' url'に置き換えて助けました。 – ger18s

+0

@ ger18s、OKです。 ) –

関連する問題