Я хотел бы создать мобильное приложение Windows 8, чтобы быть контейнером для других веб-приложений. Я имею в виду, что это приложение будет загружать с моих серверных пакетов HTML, CSS & Javascript, сохранить его в базе данных, и пользователь может открыть эти загруженные приложения. Он работает для Android и iOS, но для Win8 нет.Windows 8 App - контейнер для html-страниц
Загрузка и сохранение в базе данных. Для того, чтобы открыть скаченный приложение I создать временную папку, сохранить все файлы там и создать ссылку
<a href="file://path_to_index.html">Open</a>
Но ссылка не открывается. Я полагаю, что политика безопасности Windows не позволяет открывать локальные ссылки в мобильных приложениях.
У вас есть решение этой или любой идеи альтернативного подхода?
EDIT:
Я пытался файлы записи в локальном хранилище и открыть его в MS-WebView согласно jakerella, но он не работает. Функция webview.navigate ('мс-AppData: ///local/index.html') бросает исключение: неправильный аргумент
Javascript:
$(function() {
$('#my_button').click(function() {
var HTML_CONTENT = '<!DOCTYPE html> <html> <head> <title></title> </head> <body> <button id="btn">Click me!</button> <div id="content"></div> <script type="text/javascript" src="index.js"></script> </body> </html>';
var JS_CONTENT = 'document.getElementById("btn").onclick=function(){var a=document.getElementById("content");a.innerHTML="Clicked!"};';
var localFolder = Windows.Storage.ApplicationData.current.localFolder;
localFolder.createFileAsync("index.html", Windows.Storage.CreationCollisionOption.replaceExisting).then(function (file) {
Windows.Storage.FileIO.writeTextAsync(file, HTML_CONTENT).then(function() {
localFolder.createFileAsync("index.js", Windows.Storage.CreationCollisionOption.replaceExisting).then(function (file2) {
Windows.Storage.FileIO.writeTextAsync(file2, JS_CONTENT).then(function() {
try {
var wv = $('#wv')[0];
wv.navigate('ms-appdata:///local/index.html');
} catch (e) {
console.log(e.message);
}
});
});
});
});
});
});
И HTML:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>App1</title>
<!-- WinJS references -->
<link href="//Microsoft.WinJS.2.0/css/ui-dark.css" rel="stylesheet" />
<script src="//Microsoft.WinJS.2.0/js/base.js"></script>
<script src="//Microsoft.WinJS.2.0/js/ui.js"></script>
<script src="js/jquery-2.1.0.min.js"></script>
<script src="js/script.js"></script>
<!-- App1 references -->
<link href="/css/default.css" rel="stylesheet" />
<script src="/js/default.js"></script>
</head>
<body>
<button id="my_button">Open page</button>
<x-ms-webview id="wv">
</x-ms-webview>
</body>
</html>
EDIT2:
ОК, он работает! Я нашел решение здесь: http://blogs.windows.com/windows/b/appbuilder/archive/2013/10/01/blending-apps-and-sites-with-the-html-x-ms-webview.aspx
Ну, это зависит от того, как вы хотите «открыть» загруженный файл ... Это [страница документации] (http://msdn.microsoft.com/en-us/library/windows/apps/hh781229.aspx) говорит о загрузке локальных ресурсов, но та же идея может быть применена к ссылкам, то есть вы используете протоколы 'ms-appx' или' ms-appx-web'. Что вы хотите, когда пользователь нажимает на ссылку? – jakerella
Когда я нажимаю на ссылку, я хочу, чтобы страница была открыта – luski
Ух ... где? Как? Внешний браузер? В 'ms-webview'? Существует множество способов загрузки html-файла. – jakerella