Теория и практика разработки современных клиентских веб-приложений

Создание ускорителей приложений для веб-браузера

Показывать лекцию целиком

В IE8 ускорители представляют собой элементы контекстного меню, которые упрощают доступ к приложениям и веб-сервисам непосредственно с веб-страницы. Также ускорители упрощают копирование информации с одной веб-страницы на другую.

Можно выделить следующие ключевые моменты при работе с ускорителями:

  • Ускорители доступны по клику правой кнопки в виде соответствующего элемента веб-страницы. Все ускорители сгруппированы по функциям таким образом, что пользователи могут получить быстрый доступ к нужным им приложениям.
  • Ускорители предусматривают два типа сценариев: пользователи могут либо просмотреть информацию в эскизном варианте (preview), не покидая веб-страницу, либо переслать содержимое напрямую приложению или веб-сервису ( execute ).
  • Основанный на XML ускоритель использует XML файл для описания формата HTTP -запросов к веб-серверу. Данные из целевого контента (выделение, ссылка, документ) передаются как переменные либо как параметры, входящие в URL, либо как формоподобные данные.
  • Для установки ускорителя с веб-сайта можно использовать метод window.external.AddService для формирования запроса к пользователю.
  • или http://ie8.mail.ru/addons.html, либо созданные самостоятельно.

    При самостоятельном создании ускорителя браузера необходимо создать ). Этот файл должен размещать не в локальной системе, а на веб-сервере. Для установки ускорителя следует также добавить кнопку "Установить ускоритель", связанную с вызовом метода AddService.

    Если веб-страница включает в себя содержимое, доступное для ускорителей, то при наведении на него курсора у верхнего левого угла должна появиться иконка:. Кликнув на ней, можно получить контекстное меню со списком доступных ускорителей.

    К наиболее распространенным можно отнести следующие группы ускорителей:

  • Добавить ( Add )
  • Разместить в блоге ( Blog )
  • Дать определение ( Define )
  • Пометить на карте ( Map )
  • Отправить ( Send )
  • Перевести ( Translate )
  • Данный список является расширяемым, и при желании в него можно добавлять собственные категории.

    Переменные

    Для передачи содержимого и свойств документа ускорителю по протоколу HTTP с помощью методов GET или POST используются специальные переменные в виде полей форм или как URL параметры. Эти переменные могут быть указаны либо прямо в виде значения атрибута элемента os:execute или os:preview, либо в виде вложенных внутри os:parameter элементов.

    В качестве таких переменных можно использовать следующие:

    Переменная Контекст Описание
    {documentUrl} везде Значение атрибута href документа
    {documentTitle} везде Заголовок документа, если доступно
    {documentDomain} везде Эффективный домен второго уровня, полученный из значения атрибута href для документа
    {documentHost} везде Полное доменное имя, указанное в значении атрибута href.
    {selection} выделение Выделенный текст
    {link} гиперссылка Значение атрибута href выделенной гиперссылка
    {linkText} гиперссылка Текстовое содержимое ( innerText ) выделенной гиперссылки
    {linkRel} гиперссылка Значение атрибута rel выделенной гиперссылки, если доступно
    {linkType} гиперссылка Тип выделенной ссылки, если доступно
    {linkDomain} гиперссылка Эффективный домен второго уровня, полученный из значения атрибута href гиперссылки
    {linkHost} гиперссылка Полное доменное имя, указанное в значении атрибута href гиперссылки

    Переменные не доступны при просмотре эскиза вне контекста документа.

    Также следует иметь в виду, что:

  • имена переменных должны заключаться в скобках {};.
  • символ "?" после имени переменной указывает на необязательность этой переменной, например, {documentTitle?} .
  • если какая-либо обязательная переменная в URL недоступна, то ускоритель не может быть запущен (при этом он будет выделен в контекстном меню серым цветом).
  • если какой-либо os:parameter элемент имеет пустое значение, то он будет пропущен в запросе.
  • Параметры в URL

    В случае передаче запроса методом GET все параметры передаются внутри URL (сразу за символом "?"). При использовании элемента os:parameter, параметры в URL использоваться не будут.

    Пример.

    <os:execute method="get" action="http://example.com/service.aspx?url=
    {documentUrl}title={documentTitle?}" />

    Формоподобные данные

    В случае передаче запроса методом POST с помощью элементов os:parameter описываются пары name/value как у веб-формы, например:

    <os:execute method="post" action="http://example.com/service.aspx>
        <os:parameter name="url" value="{documentUrl}" />
        <os:parameter name="title" value="{documentTitle?}" />
    </os:execute>

    При отсутствии значения обязательного параметра, последний удаляется из запроса.

    Порядок выполнения работы.

    Для выполнения данной лабораторной работы необходимо иметь установленный веб-сервер IIS 7.

    Задание 1. Создание XML -дескриптора ускорителя.

  • Для выполнения данного задания необходимо с помощью .
  • Далее, с помощью комбинации клавиш <CTRl+N> (или через меню File > New File ) создайте XML страницу activity.xml следующего содержания:

    <?xml version="1.0" encoding="UTF-8"?>
    
    <os:openServiceDescription
        xmlns:os="http://www.microsoft.com/schemas/openservicedescription/1.0">
    
      <os:homepageUrl>http://localhost/Accelerator/</os:homepageUrl>
    
      <os:display>
        <os:name>Детализация</os:name>
        <os:icon>http://localhost/Accelerator/accelico.ico</os:icon>
        <os:description>Быстрая справка по секциям</os:description>
      </os:display>
    
      <os:activity category="Define">
        <os:activityAction context="selection">
          <os:preview action="http://localhost/php/phpinfo.php" method="get">
            <os:parameter name="txt" value="{selection}" type="text" />
          </os:preview>
    
          <os:execute action="http://localhost/php/phpinfo.php" method="get">
            <os:parameter name="txt" value="{selection}" type="text" />
          </os:execute>
    
        </os:activityAction>
      </os:activity>
    
    </os:openServiceDescription>

    Корневым элементом документа является .

    С помощью элемента os:homepageUrl задается URL ускорителя (для обеспечения доступа к нему пользователя). При этом все URL укпзываемые внтури ускорителя должны относиться к тому же домену, что и os:homepageUrl.

    Обязательный элемент os:display предназначен для описания способа отображения ускорителя прользователю. Он содержит вложенные элементы os:name (обязательный), os:icon (необязательный) и os:description (необязательный):

  • os:name - содержит имя ускорителя, отображаемое в контекстном меню.
  • os:icon - содержит URL иконки размером 16x16 пикселей, отображаемой также в контекстном меню.
  • os:description - содержит более полное описание ускорителя, отображаемое в диалоговом окне управления "Надстройки"
  • Элемент os:activity (обязательный) задает категорию акселератора и, в свою очередь, содержит как минимум один обязательный элемент os:activityAction. Последний предназначен для указания контекста запуска ускорителя. Контекст описываеся необязательным атрибутом context, значение по-умолчанию которого - selection. Допустимы следующие варианты значений для context:

    Контекст Описание
    document Текущий документ. Всегда доступно
    selection По-умолчанию. Выделенный пользователем текст. Ускоритель доступен только при клике на выделенной области
    link Гиперссылка. Ускоритель доступен только для гиперссылок.

    Необязательный элемент os:preview определяет содержимое HTML окна отображаемого при наведении пользователем курсора на ускоритель.

    Обязательный элемент os:execute определяет действие, выполняемое при вызове ускорителя пользователем.

    Оба элемента os:preview и os:execute имеют одинаковый список атрибутов и дочерних элементов. В приведенном выше пример они содержат дочерний элемент, содержащий описание параметра, передаваемого ускорителю при запуске. Допустимы следующие атрибуты для обоих элементов:

    Атрибут Обязательность Описание
    action да URL документа назначения
    method нет Метод передачи данных ( get - по умолчанию, post )
    enctype нет Тип передаваемого содержимого. По-умолчанию application/x-www-form-urlencoded
    accept-charset нет Кодировка содержимого. По-умолчанию utf-8

    Необязательный элемент os:parameter является альтернативным описанием, переменной, используемой для передачи данных серверу.

    В данном примере использована иконка ( accelico.ico ) размером 16x16, которая должна находиться на том же сайте, что и сам ускоритель.

    Для создания эскизного окна подготовьте и разместите php -сценарий следующего содержания:

    <?php 
    
    $selection = $_GET["txt"];
    
    switch ($selection) 
    {
    case "A1": 
    echo "ИТ-образование: методология, методическое обеспечение"; break;
    	case "A2": 
    echo "e-learning, ИТ в образовании"; break;
    	case "A3": 
    echo "Теоретическая информатика"; break;
    	case "A4": 
    echo "Параллельное и распределенное программирование"; break;
    	case "B1": 
    echo "Научное программное обеспечение в образовании";break;
    	case "B2": 
    echo "Исследования и разработки в области новых ИТ и их приложений"; break;
    	case "B3": 
    echo "Стандартизация ИТ"; break;
    	case "C1": 
    echo "Образовательные ресурсы и лучшая практика ИТ-образования"; break;
    	case "C2": 
    echo "Школьное образование по информатике"; break;
    	case "C3": 
    echo "Организация обучения практическим навыкам в области IT- образования"; break;
    	case "КС1": 
    echo "Круглый стол - Информационные технологии в университетском управлении "; break;
    	case "КС2": 
    echo "Круглый стол - Технологии и инфраструктура телекоммуникаций"; break;
    	default: 
    echo "Не определено";
    }
    
    ?>
  • Для регистрации ускорителя можно создать на веб-сайте http://localhost/Accelerator/ HTML документ, содержащий, например, кнопку следующего вида:

    <button id="myButton"        onclick="window.external.AddService
    ('http://localhost/Accelerator/activity.xml')"> 
    Добавить ускоритель "Детализация" в список ускорителей
    </button>
  • Загрузите веб-страницу http://localhost/webslice/confer.html. Проверьте работа ускорителя, выделяя обозначения секций в расписании.
  • Самостоятельное задание

    Добавьте в файл activity.xml описание ускорителя для контекста гиперссылки с помощью элемента <os:activityAction context="link"> . Проверьте работу ускорителя для гиперссылок.

    Вернуться к учебному плану