Создание ссылок на внешние веб-страницы (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
Узнайте, как создавать ссылки на внешние веб-страницы и отображать их в своем приложении.
Необходимые условия
- Предполагается, что вы умеете создавать простые приложения. Чтобы освоить этот этап, обратитесь к разделу Создание первого приложения на JavaScript.
Инструкции
Создание ссылки на внешнюю веб-страницу
Чтобы создать ссылку на внешнюю веб-страницу, просто добавьте гиперссылку в HTML-код. В этом примере показано создание ссылки на веб-страницу www.bing.com. Когда вы щелкаете ссылку, соответствующая страница открывается в веб-браузере (а не в вашем приложении).
<p><a href="https://www.bing.com">Search the web</a></p>
Отображение внешней веб-страницы в приложении
Ваше приложение может отображать внешнюю страницу в элементе iframe, но вы не можете переходить со страницы верхнего уровня на внешнюю веб-страницу.
Отображение внешней веб-страницы в вашем приложении
Создайте элемент iframe для отображения веб-страницы. Задайте атрибут name элемента iframe.
<iframe name="targetFrame"> </iframe>
Создайте ссылку на внешний веб-сайт. В качестве значения ее атрибута target укажите имя элемента iframe, который вы создали на предыдущем шаге.
<p><a href="https://www.bing.com" target="targetFrame" >Search the web</a></p> <iframe name="targetFrame"> </iframe>
Когда вы запускаете приложение и щелкаете ссылку, соответствующая страница открывается внутри вашего приложения. Страница выполняется в веб-контексте и имеет ограниченный доступ к системе в сравнении со страницами, которые входят в состав пакета вашего приложения.
При отображении внешней веб-страницы в iframe рекомендуется предусмотреть настраиваемую страницу ошибок на случай проблем со страницей. Пример того, как это сделать, см. в разделе XHR, обработка ошибок навигации и образец схем URL.
Примечание По причинам, связанным с производительностью, приложения Магазина Windows могут бесконечно производить кэширование удаленного содержимого. В результате ваше приложение может не показывать последние обновления сценариев или CSS. Удаление и повторная установка приложения очищают кэш. Другие решения включают случайный параметр в строке запроса или настройку веб-сервера таким образом, чтобы он не выполнял кэширование. Дополнительные сведения см. в разделе Отключение кэширования в приложении Internet Explorer.
Локальный контекст и веб-контекст
Страницы, которые вы добавляете в само приложение, обычно выполняются в локальном контексте приложения. При использовании iframe для перехода к удаленной странице эта страница выполняется в веб-контексте и имеет ограниченный доступ к вашей системе.
Возможности, к которым могут обращаться страницы и сценарии в локальном контексте и в веб-контексте, различаются. Например, страницы в локальном контексте могут использовать среду выполнения Windows и выполнять междоменные запросы XHR. Независимо от контекста страницы могут обращаться к библиотеке Windows для JavaScript.
Дополнительные сведения о различных возможностях, доступных для страниц в локальном контексте и веб-контексте, см. в разделе Возможности и ограничения в зависимости от контекста.
С помощью раздела ApplicationContentUriRules манифеста пакета приложения вы можете предоставить странице в веб-контексте доступ к устройствам определения географического положения вашей системы (если ваше приложение имеет разрешение на доступ к этим функциональным возможностям), а также доступ к буферу обмена.
Предоставление странице в веб-контексте доступа к дополнительным возможностям
Чтобы предоставить странице в веб-контексте доступ к дополнительным возможностям, необходимо создать правило для URI содержимого. В обозревателе решений Microsoft Visual Studio щелкните правой кнопкой мыши файл package.appxmanifest вашего приложения и выберите команду Открыть в конструкторе. Откроется конструктор манифестов.
В столбце URI укажите универсальный код ресурса (URI) веб-страницы, которую нужно добавить.
Существует несколько способов указать соответствие URI.
- Вы можете указать точное имя узла.
- Вы можете указать имя узла, для которого включен или исключен универсальный код ресурса (URI) со всеми поддоменами этого имени узла.
- Вы можете указать точный URI.
- Вы можете указать точный URI, который может содержать свойство запроса
- Для правила включения вы можете указать частичный путь и использовать подстановочный знак для указания конкретного расширения файлов.
- Относительные пути можно использовать для правил исключения, но не для правил включения.
Для этого примера установите для URI значение
https://www.bing.com/*
.Примечание Если у вас более одного поддомена, нужно использовать один подстановочный знак для каждого поддомена. Например, "https://*.microsoft.com" соответствует "https://"any".microsoft.com", но не соответствует "https://"this"."any".microsoft.com."
В раскрывающемся списке Правило можно указать, нужно ли включать URI. Задайте здесь значение включить.
Щелкните Добавить новый URI, чтобы добавить правило. Конструктор сам добавляет новый элемент Rule в раздел ApplicationContentUriRules файла манифеста вашего пакета.
<ApplicationContentUriRules> <Rule Match="https://www.bing.com/*" Type="include" /> </ApplicationContentUriRules>
Переходы между страницами в веб-контексте и страницами в локальном контексте
Нельзя перейти со страницы в веб-контексте обратно на страницу в локальном контексте, если не вызвать метод MSApp.addPublicLocalApplicationUri со страницы в локальном контексте и не передать ему URI страницы, на которую должен осуществляться переход со страниц в веб-контексте. Например, чтобы со страницы в веб-контексте можно было переходить на страницу page2.html в вашем приложении, используйте следующий код.
MSApp.addPublicLocalApplicationUri("page2.html");
Теперь со страниц в веб-контексте можно переходить на страницу page2.html. Этот метод нужно вызвать только один раз для каждой страницы в локальном контексте, которую вы хотите сделать доступной для страниц в веб-контексте.
Предупреждение Если ваша страница принимает параметры запроса и вы разрешаете переходить на нее с любой веб-страницы, то внешняя веб-страница может передать вредоносные параметры запроса.