gpt4 book ai didi

javascript - ms-appdata 方案在 UWP WebView 中触发 UnsupportedUriSchemeIdentified

转载 作者:行者123 更新时间:2023-11-30 00:08:17 25 4
gpt4 key购买 nike

我正在使用 C# 开发一个 uwp 应用程序。我有一个需求,需要下载一个网站的资源,包括图片、脚本和html页面,以便离线显示。我把资源下载下来保存在本地文件夹下。但是,当我尝试访问它们时(从 javascript 脚本内部),UnsupportedUriSchemeIdentified 事件会触发。

这是一段使用资源的javascript代码

function startSth(sth,tracking){
sthAPI.SetSth(sth, tracking);

var sthUrl = sthBaseUrl + sth.Href;
if(sth.Parameters !== undefined && sth.Parameters !== null && sth.Parameters !== ""){
if(sth.Parameters.indexOf('?')===0) sth.Parameters = sth.Parameters.substring(1);
sthUrl += "?"+sth.Parameters;
}

if ( urlParams != "" )
{
sthUrl += (sthUrl.indexOf( '?' ) === -1) ? '?' : '&';
sthUrl += urlParams;
}
document.getElementById('mainFrame').src = sthUrl;
}

此代码尝试访问在本地存储中下载的 html 页面并将其设置为 IFrame 的源。 sthBaseUrl 变量早先从 c# 代码提供,类似于 ms-appdata:///local/folder/

根据我的理解,ms-appdata 方案是 UWP 支持的方案之一 WebView .我见过它用于导航到这样的内容的示例 webView1.Navigate("ms-appdata:///local/intro/welcome.html");

我不明白为什么会触发该事件。

javascript 不是我写的,它是一个更大更复杂系统的一部分,所以我没有直接控制权来更改它(没有非常有说服力的论据)。

有人知道绕过这个问题并让 javascript 从本地存储加载页面(和其他资源)的方法吗?

如果没有这种方式,如何修改javascript来实现呢?

这会触发 unsuppoertedUriSchemeIdentified 事件。

最佳答案

来自官方文档:

WebView supports navigation to URIs using these schemes: http, https, ms-appx-web, and ms-local-stream.

  1. 据我从代码中看到的,问题是您正在 WebView 内的 iframe 中导航到 sthUrl,而不是 webview 本身。这就是抛出此异常的地方 - 出于安全原因,您无法导航到可能不安全的内容。
  2. 您不能混入来自不同文件夹的相同 (webview) 上下文文件。

    Each of these first-level subfolders is isolated from the content in other first-level subfolders. For example, you can navigate to ms-appdata:///temp/folder1/file.html, but you can’t have a link in this file to ms-appdata:///temp/folder2/file.html.

  3. 最后考虑使用NavigateToLocalStreamUri方法。它应该允许将本地缓存的内容包装到一个流中,您可以通过 ms-local-stream 协议(protocol)在 webview 中引用该流。这是一个good description关于如何在完全离线场景的 Web 应用程序模板中使用它。

关于javascript - ms-appdata 方案在 UWP WebView 中触发 UnsupportedUriSchemeIdentified,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37574477/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com