Загрузка файловых ресурсов (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. В случае разработки приложений для Windows 10 см. раздел последняя документация]
Сведения о загрузке файловых ресурсов из различных расположений.
Вы можете обращаться к файловым ресурсам в файлах приложения, которые вы предоставляете в составе пакета приложения или включаете в пакет компонента либо в пакет платформы, из данных приложения или из Интернета. На эти файлы можно сделать ссылки в разметке (например, HTML или Notifications XML) или с помощью кода (например, API Windows.Web.Http или storage file). Приведенные в этом разделе примеры демонстрируют файловые ресурсы в определенных контекстах, но вы можете использовать большинство из них в других контекстах.
Интернет
Для доступа к файлам из Интернета используйте стандартные абсолютные универсальные коды ресурса (URI) HTTP.
<img src="https://www.contoso.com/images/logo.png" alt="Logo" />
Пакет приложения
Для доступа к файлам из пакета приложения используйте прямой или логический путь к файлу для ссылки на ресурс. Это возможно, даже если файлы отличаются языками, масштабом, контрастностью или другими характеристиками, такими как квалификаторы в названии файла. Вводную информацию на эту тему см. в разделе Краткое руководство: использование ресурсов файлов и изображений.
Например, можно загрузить
Images/en-US/homeregion-USA/logo.scale-100_contrast-white.png
путем ссылки на
Images/logo.png
Для доступа к файлам относительно текущего документа в разметке используйте относительные URI.
<img src="images/logo.png" />
Для доступа к файлам относительно корня пакета используйте URI абсолютного пути (начинающиеся с "/").
<img src="/images/logo.png" />
Для обращения к файлам, которые хранятся в том же пакете, но происходят из библиотеки классов, используйте имя библиотеки классов:
<img src="/ClassLibraryName/images/logo.png" />
Для доступа к файлам, которые хранятся внутри пакета приложения, из кода, где нет корня, подразумеваемого из основного документа, используйте схему ms-appx:.
var uri = new Windows.Foundation.Uri('ms-appx:///images/logo.png');
Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).done(function (file) {
...
});
Для доступа к файлам, хранящимся в платформе или пакете библиотеки, которые включены в приложение, используйте абсолютный URI (и схему ms-appx:).
<script src="ms-appx:///Bing.Maps.JavaScript//js/veapicore.js"></script>
Для доступа к файлам, которые будут загружены в веб-секцию, используйте схему ms-appx-web:.
<iframe src="ms-appx-web:///html/webcompartment.html"></iframe>
Для доступа к файлам, находящимся в одной веб-секции или локальной секции с текущим документом, не указывайте схему.
<script src="//Microsoft.WinJS.2.0/js/ui.js"></script>
Данные приложения
Для доступа к файлам, хранящимся в данных приложения, используйте схему ms-appdata:. Данные приложения могут храниться в папке local, папке roaming или папке temp.
Доступ к файлам, хранящимся в папке local:
<img src="ms-appdata:///local/images/logo.png" />
Доступ к файлам, хранящимся в папке roaming:
<img src="ms-appdata:///roaming/images/logo.png" />
Доступ к файлам, хранящимся в папке temp:
<img src="ms-appdata:///temp/images/logo.png" />
storage file APIs может получить доступ к файлам внутри пакета приложения аналогичным образом:
var uri = new Windows.Foundation.Uri('ms-appdata:///local/images/logo.png');
Windows.Storage.StorageFile.getFileFromApplicationUriAsync(uri).done(function (file) {
...
});
События и изменения контекста
Ваше приложение должно при необходимости обновлять отображение своих ресурсов.
Во время работы приложений Магазина Windows в системе могут происходить изменения, например когда пользователь включает высокую контрастность. Это приведет к использованию другого набора квалификаторов. При различных изменениях в системе создаются события объекта ResourceContext.
Простейший способ организовать прослушивание этих событий в JavaScript — с помощью метода addEventListener:
WinJS.Resources.addEventListener('contextchanged', refresh, false);
Элементы изображений не обновляются автоматически при изменениях контекста, и именно приложение должно заменять изображения. Запросы CSS носителя служат альтернативным способом моментального обновления свойств CSS, таких как background-image.