Windows 10 WebView InvokeScript无法正常工作

时间:2016-03-18 04:56:09

标签: c# windows windows-phone windows-10 windows-10-universal

我的Windows 10通用应用程序正在使用一个webview,它使用InvokeScript调用JS函数“eval”,同时将一些其他javascript注入函数。但是,当我测试它时,没有任何反应。调试显示脚本正确存储并且正在访问该功能,但webview似乎根本没有更新。

private void browser1_LoadCompleted_1(object sender, NavigationEventArgs e)
    {
        try
        {
            count++;
            browser1.InvokeScript("eval", test);
        }
        catch (Exception E)
        {

        }

        address.Text = browser1.Source.ToString();
    }
}

此代码在Windows Phone 8及更早版本中运行良好。但现在使用Windows 10 webview,它似乎没有任何效果。这是将我的脚本存储在测试变量中的代码:

private async void ReadFile()
    {
        string fileContent;
        StorageFile file = await StorageFile.GetFileFromApplicationUriAsync(new Uri(@"ms-appx:///Script.js"));
        using (StreamReader sRead = new StreamReader(await file.OpenStreamForReadAsync()))
            fileContent = await sRead.ReadToEndAsync();
        test = new string[] { fileContent };
    }

我不确定为什么没有发生。我已经确认调用InvokeScript时测试变量确实包含脚本。我甚至使用不同且更简单的JS脚本测试了InvokeScript,这些脚本肯定适用于此应用程序的Windows Phone 8版本。在调用JS函数时,是否有一些我缺少的东西让webview更新?

2 个答案:

答案 0 :(得分:4)

原来解决方案非常简单。显然,在Windows 10 UWP中不推荐使用InvokeScript,现在只有InvokeScriptAsync可以使用。所以我所要做的就是让我的方法成为异步方法,然后等待InvokeScriptAsync调用。

答案 1 :(得分:1)

Windows 10中的InvokeScript仅适用于受信任的来源。我试过并得到了和你一样的结果。之前在Win 8上运行的确切脚本不再适用于UWP。