winrt:在webview中加载本地html及其资源

Eri*_*ick 3 webview microsoft-metro windows-runtime

我正在开发一个WinRT应用程序,我从中加载本地HTML文件Windows.Storage.ApplicationData.Current.LocalFolder.我想知道加载HTML文件中嵌入的图像,音频,视频,CSS,JavaScripts等资源的最佳方法是什么.

目前,我正在编写这些文件,Windows.ApplicationModel.Package.Current.InstalledLocation但是一旦从商店部署应用程序或通过Windows PowerShell安装AppPackage,这将不再可访问,除非您将"Program Files/WindowsApps"文件夹的所有权更改为当前用户或"Everyone".

提前致谢.

Dam*_*Arh 9

我不确定你在这里问的是什么.唯一应该是Windows.ApplicationModel.Package.Current.InstalledLocation随AppPackage一起安装的文件,即应用程序发行版的一部分.您的应用程序不应该(甚至不允许)在其中存储任何文件.

在运行时所产生的任何文件应该被存放在一个Windows.Storage.ApplicationData.Current.LocalFolder,Windows.Storage.ApplicationData.Current.RemoteFolder并且Windows.Storage.ApplicationData.Current.TempFolder,这取决于你如何希望他们被保留.唯一的例外是当你希望用户甚至从你的应用程序外部访问这些文件的情况下-那么你应该把它们放在一个库(和需要访问它),或使用文件选择器要求用户提供一个位置.

编辑:

加载本地HTML资源非常有限,除非它们与应用程序一起分发,即它们存储在协议中InstalledLocation并通过ms-appx-web协议访问.如文档所述,WebView控件不支持ms-appdata用于从中检索数据的协议LocalStorage,RemoteStorage或者TempFolder:

此外,WebView不支持ms-appdata:方案,尽管它支持ms-appx-web:方案.这使您可以在项目中加载内容文件.

这或多或少会带走C#项目中的所有选项.你可以使用另一种HTML查看器控件,但我知道一个,它甚至还没有完成.

在JavaScript中,情况稍微好一些.仅支持数据文件的ms-appdata协议:

有时,将从Internet下载的资源引用到应用程序的本地ApplicationData存储(通过Windows运行时API)非常有用.要引用此类内容,必须使用方案"ms-appdata:",以及ApplicationData本地存储中文件的路径.请注意,出于安全原因,您无法导航到已下载到此位置的HTML,也无法运行任何可执行文件或可执行代码,例如脚本或CSS.它适用于诸如图像或视频等媒体.

这意味着您可以:

<img src="ms-appdata:///local/img/coal.jpg" />
Run Code Online (Sandbox Code Playgroud)

但不是:

<iframe src="ms-appdata:///local/index.html" />
Run Code Online (Sandbox Code Playgroud)

ms-appdataprotocal语法有很好的文档记录,以备您仍然可以使用它.