设置Windows Phone 8.1 WebView的基本URL并使用NavigateToString()

时间:2015-09-16 15:12:25

标签: c# iframe webview windows-phone-8.1 winrt-xaml

在我的应用中,我想加载包含带有远程网址的 iframe 的html。除了iframe的src之外,这个html总是一样的。我所做的是将 html保存在字符串中,并填写iframe网址,而不是调用 NavigateToString(html)。我从REST API获取 iframe url 。我还得到了 baseUrl 。如果我将这两个网址合并到一个absoulute网址并将其设置为iframe的src,则由于安全原因(这是付款页面),页面将无法加载。但是,如果我将设置为baseUrl ,当然,webview不知道baseUrl是什么,而页面也不会加载

在Android中,可以简单地调用 webView.loadDataWithBaseURL 。 Windows Phone 8.1中是否有类似的内容?任何解决方法?

(问题更加复杂,我还必须将Cookie设置为webview。)

1 个答案:

答案 0 :(得分:5)

我想出了一个有效的解决方案,实际上它起初并不比我在看起来那么简单。

我跳过了NavigateToString。通过使用NavigateWithHttpRequestMessage,我可以向URL发送请求,例如http://mybackend.com。我也可以设置cookie(有关此内容的更多信息:https://social.msdn.microsoft.com/Forums/windowsapps/en-US/a451d411-9312-4d40-80ee-112e166144ab/how-to-send-auth-cookie-in-webview-request?forum=winappswithcsharp)。到目前为止,我有:

  1. 基本网址设置

  2. 设置了Cookie。

  3. 虽然,我还没有设置我的本地html字符串。为此,在WebView的NavigationCompleted事件中,我运行如下的JS脚本:

    await wvSecurePay.InvokeScriptAsync("eval", new string[] { "document.getElementsByTagName('html')[0].innerHTML = '" + htmlToLoad + "';"})
    

    这会将当前的html内容替换为我要加载的内容。所以我的html包含iframe和相对url,页面上有我需要的域名。