0

我正在使用 webview 在我的 Windows 8 应用程序中显示某些数据。我想使用本地 js 文件的包含以及使用本地存储的图像。

这可能吗?

将文件所在的本地路径放在我没有任何运气。

4

3 回答 3

9

根据WebView 文档,您只能使用该ms-appx-web协议引用其他文件,即加载存储在 中的文件Windows.ApplicationModel.Package.Current.InstalledLocation,这意味着它们需要与您的应用程序一起作为内容分发。出于安全原因,该控件不支持ms-appdata协议,即,如果您在运行时生成或下载它们,您无法打开存储的文件Windows.Storage.ApplicationData.Current.LocalFolder Windows.Storage.ApplicationData.Current.RemoteFolderWindows.Storage.ApplicationData.Current.TempFolder您需要放置它们的位置。

JavaScript 应用程序WebView灵活一点:它也支持ms-appdata协议,但仅适用于图像等媒体文件。它无法打开任何潜在的可执行代码,例如脚本或 CSS。

于 2012-12-20T05:39:26.080 回答
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);

而且我可以很容易地打开这个 .html 文件,有或没有FileOpenPicker

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:///

于 2013-06-24T16:31:51.150 回答
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;
            }
        }
    }

我希望这能为您指明正确的方向!

于 2012-12-20T02:10:39.567 回答