在我的应用中,我想加载包含带有远程网址的 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。)
答案 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)。到目前为止,我有:
基本网址设置
设置了Cookie。
虽然,我还没有设置我的本地html字符串。为此,在WebView的NavigationCompleted事件中,我运行如下的JS脚本:
await wvSecurePay.InvokeScriptAsync("eval", new string[] { "document.getElementsByTagName('html')[0].innerHTML = '" + htmlToLoad + "';"})
这会将当前的html内容替换为我要加载的内容。所以我的html包含iframe和相对url,页面上有我需要的域名。