Закреплённые сайты: создание и управление из сценариев (ч.4)
Последняя, заключительная, часть статьи о возможностях по программному управлению закреплёнными веб-сайтами в Internet Explorer 9.
7. Способы привлечь внимание пользователя
Internet Explorer 9 предоставляет два способа привлечь внимание пользователя к закреплённым веб-сайтам. Сейчас мы их рассмотрим.
Примечание:
Перед использованием возможностей по привлечению внимания пользователя обязательно следует проверить, был ли веб-сайт закреплён. Для этого можно использовать уже знакомый нам метод msIsSiteMode.
7.1. Наложения
Наложение - это небольшая иконка, которая появляется в правом нижнем углу ярлыка закреплённого веб-сайта. Наложения обычно используются, чтобы ненавязчиво привлечь внимание пользователя к каким-либо событиям. Так, их можно применить, чтобы сигнализировать о поступлении новых сообщений электронной почты.
Для создания наложения используется метод msSiteModeSetIconOverlay объекта External. Формат его вызова таков:
window.external.msSiteModeSetIconOverlay(
<интернет-адрес файла иконки, которая будет использоваться
в качестве наложения>[,
<текстовое описание для наложения>]
);
е наложения>[,
<текстовое описание для наложения>]
);[/code]
С первым параметром всё ясно. Второй, необязательный, параметр задаёт текстовое описание для наложения; это описание не будет отображаться на экране, но может выводиться другим способом, например, программами чтения с экрана. Значения обоих параметров должны быть представлены в виде строк.
Иконки, которые будут использоваться в качестве наложения, должны иметь размеры 16х16 пикселов и прозрачный фон.
Результата метод msSiteModeSetIconOverlay не возвращает.
[code]window.external.msSiteModeSetIconOverlay("/icons/overlay-icon.ico");[/code]
Если на момент вызова метода msSiteModeSetIconOverlay уже было создано какое-либо наложение, оно будет заменено новым.
Чтобы удалить наложение, мы вызовем метод msSiteModeClearIconOverlay объекта External. Этот метод не принимает параметров и не возвращает результата.
[code]window.external.msSiteModeClearIconOverlay();[/code]
Ниже приведён HTML-код веб-страницы, которая с периодичностью в 1 секунду то создаёт наложение, то убирает его.
[code]<!DOCTYPE html>
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
<TITLE>Наложение</TITLE>
</HEAD>
<BODY>
<SCRIPT>
if (window.external.msIsSiteMode()) {
var isNotified = false;
window.setInterval(
function ()
{
if (isNotified)
window.external.msSiteModeClearIconOverlay()
else
window.external.msSiteModeSetIconOverlay("icon.ico");
isNotified = !isNotified;
}, 1000);
}
</SCRIPT>
</BODY>
</HTML>[/code]
Первым делом мы, разумеется, проверяем, принадлежит ли эта страница закреплённому веб-сайту. Ведь только для закреплённых веб-сайтов доступна функциональность наложений.
Далее мы объявляем переменную isNotified, которая будет хранить признак того, выведено на экран наложение (значение true) или нет (значение false).
Метод setInterval объекта Window создаёт так называемый таймер - "будильник", срабатывающий каждый раз по истечении указанного интервала времени и вызывающий при этом заданную нами функцию. Фукнция эта указывается первым параметром данного метода, а значение интервала времени в миллисекундах - вторым. Более подробно метод setInterval описывается в параграфе 18
В теле функции, вызываемой таймером, мы, в зависимости от значения переменной isNotified, выводим или убираем наложение и меняем значение этой переменной на противоположное. Здесь всё совсем просто.
7.2. Мерцание ярлыка на панели задач
Ещё один способ привлечь внимание пользователя - заставить ярлык закреплённого веб-сайта, находящийся на панели задач, мерцать. Обычно таким образом сигнализируют о каких-либо важных вещах, на которые пользователь должен отреагировать незамедлительно.
Чтобы заставить ярлык мерцать, следует вызвать метод msSiteModeActivate объекта External. Этот метод не принимает параметров и не возвращает результата.
[code]window.external.msSiteModeActivate();[/code]
Как только мы вызовем метод msSiteModeActivate, ярлык закреплённого веб-сайта мигнёт 20 раз. При этом, если панель задач скрыта, она будет выведена на экран.
8. Что делать, если браузер не поддерживает закреплённые веб-сайты
На данный момент поддержка закреплённых веб-сайтов присутствует только в Internet Explorer 9. Другие браузеры их не поддерживают; следовательно, веб-сценарии, использующие описанные в этой статье возможности, будут завершаться с выдачей сообщений об ошибках. Как нам этого избежать?
Разработчики Internet Explorer 9 настоятельно рекомендуют помещать весь JavaScript-код, манипулирующий закреплёнными веб-сайтами, в блок обработки исключений try-catch. При этом секция catch этого блока обычно делается пустой; в этом случае при возникновении ошибки на экране не появится никакого сообщения, и веб-сценарий выполнится успешно.
[code]try {
window.external.msAddSiteMode();
}
catch(exc) {
//Ничего здесь не делаем
}[/code]
Дополнительные материалы
Март 2011