我正在使用webview在我的Windows 8应用中显示某些数据。我想使用include到本地js文件以及使用本地存储的图像。
这可能吗?
通过放置文件所在的本地路径,我没有运气。
答案 0 :(得分:9)
根据WebView
documentation,您只能使用ms-appx-web
协议引用其他文件,即加载Windows.ApplicationModel.Package.Current.InstalledLocation
中存储的文件,这意味着需要分发这些文件作为内容以及您的应用程序。出于安全原因,该控件不支持ms-appdata
协议,即您无法打开存储Windows.Storage.ApplicationData.Current.LocalFolder
Windows.Storage.ApplicationData.Current.RemoteFolder
或Windows.Storage.ApplicationData.Current.TempFolder
的文件,如果您需要将它们放在那里在运行时生成或下载它们。
在JavaScript应用中,WebView
更多flexible:它也支持ms-appdata
协议,但仅适用于图片等媒体文件。它无法打开任何可能的可执行代码,例如脚本或CSS。
答案 1 :(得分:1)
如果要打开某个本地.html文件或atc。您应该在 InstalledLocation
文件夹中下载它。如果您无法创建新文件,则可以使用file.CopyAsync(htmlFolder, fname + ".html");
例如,我创建了一些.html文件:
StorageFolder htmlFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.CreateFolderAsync(@"HtmlFiles", CreationCollisionOption.GenerateUniqueName);
IStorageFile file = await htmlFolder .CreateFileAsync(fname + ".html", CreationCollisionOption.GenerateUniqueName);
而且我可以轻松打开这个带有或不带FileOpenPicker
的.html文件:
var fop = new FileOpenPicker();
fop.FileTypeFilter.Add(".html");
var file = await fop.PickSingleFileAsync();
if (file != null)
{
string myPath = file.Path.Substring(file.Path.IndexOf("HtmlFiles"));
myWebview.Navigate(new Uri("ms-appx-web:///" + myPath));
}
不要忘记 - 只能通过 InstalledLocation
,您可以使用ms-appx-web:///
答案 2 :(得分:0)
如果WebView是基于IE10的,那么FIleReader可能就是您要找的。下面是我在图像ipload页面上使用的一段代码,当通过“文件打开”对话框选择图像时,它们会在页面中显示图像:
$('input:file').each(function(index, evt){
if(index===0)
{
var files = evt.files;
for(var i=0;i<files.length;i++)
{
if(files[i].name===filename)
{
var reader = new FileReader();
reader.onload=(function(theFile){
return function(e){
var line= uploader.fineUploader('getItemByFileId',id);
if(line!=undefined)
$(line).append('<img class="fileimage" id="fileImage-' + id + '" src="'+e.target.result+'" />');
};
})(files[i]);
reader.readAsDataURL(files[i]);
break;
}
}
}
我希望这能指出你正确的方向!