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

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

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

在 Android 中,可以简单地调用webView.loadDataWithBaseURL。 Windows Phone 8.1中有类似的功能吗?有什么解决办法吗?

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

最佳答案

我想出了一个可行的解决方案,而且实际上它比我一开始看起来的要简单。

我跳过了 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. 基本 URL 设置

  2. cookie 设置。

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

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

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

关于c# - 设置 Windows Phone 8.1 WebView 的基本 URL 并使用 NavigateToString(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32612521/

相关文章:

c# - 确保动态加载类型的向后兼容性

html - 表单 target=iframe 正在重定向而不是加载

javascript - 如何将点击事件添加到 iframe 的动态元素?

javascript - 无法使用 contentscript chrome 扩展将 iframe 添加到页面中

android - 为什么我的 WebView 没有填满屏幕的整个宽度?

iOS Swift webview 重新加载动态构建网站的实际站点

c# - Windows Azure 表存储中的批量删除

c# - 数据绑定(bind) InkCanvas child

c# - 从 TCP/IP 设备接收数据

android - WebView 在蓝色框中显示问号