UWP Webview InvokeScriptAsync将错误的参数传递给JS函数

时间:2016-07-15 12:39:54

标签: windows-phone-8.1 windows-mobile uwp

在我的JS文件中,我有 handleMessage(消息)功能。 消息参数看起来像" background = / path;"。

问题在于,当我调用 InvokeScriptAsync(" handleMessage",new [] {" background = / path;"} 我刚刚得到一个"将军"作为JavaScript中的参数。

如果我更换"背景"对于其他东西,JS中的参数将是正确的。 此问题仅对Mobile有效。我在桌面上没有问题。

1 个答案:

答案 0 :(得分:0)

  

我在JavaScript中只是一个“常规”作为参数。

我很好奇你是怎么知道你有一个“将军”,你在你的HTML上输出了message吗?看起来您设置了background的文件路径,这里的一个问题是UWP应用程序中的文件路径是否合法,因为UWP应用程序在沙箱中工作,某些路径可以在经典桌面应用程序中使用'用于UWP。

我无法在UWP应用程序和WP8.1应用程序中重现您的问题代码,我只是假设您要将图像设置为元素的背景。这是一个示例:

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

这里的主要想法是,您可以尝试使用Uri替换path,我的图片会保存在项目的Assets文件夹中。如果您有任何疑问,请更新您的代码并发表评论。