我正在使用webview在我的Windows 8應用程序中顯示某些數據。我想用戶包括一個本地js文件以及使用本地存儲的圖像。當我使用navigatetostring時,我可以在webview中引用本地文件嗎?
這可能嗎?
我沒有任何運氣通過將本地路徑放在文件所在的位置。
我正在使用webview在我的Windows 8應用程序中顯示某些數據。我想用戶包括一個本地js文件以及使用本地存儲的圖像。當我使用navigatetostring時,我可以在webview中引用本地文件嗎?
這可能嗎?
我沒有任何運氣通過將本地路徑放在文件所在的位置。
根據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。
如果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;
}
}
}
我希望這點你在正確的方向!
如果你想打開一些本地.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:///
完美工作,感謝您的幫助打開。我很抱歉沒有在文檔中找到它。 – Smeegs
現在這仍然是真的嗎?我以爲我讀過現在支持ms-appdata URL – Chicowitz