Спонсор: Microsoft
Опубликован: 19.07.2010 | Доступ: свободный | Студентов: 1446 / 66 | Оценка: 4.07 / 3.43 | Длительность: 20:59:00
Самостоятельная работа 5:

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

Аннотация: Цель работы. Знакомство с ускорителями приложений, форматом их описания и способами внедрения на веб-страницу.

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

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

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

Internet Explorer 8 позволяет устанавливать ускорители, размещенные на специальных веб-страницах, например, http://www.ieaddons.com/ru/ или http://ie8.mail.ru/addons.html, либо созданные самостоятельно.

При самостоятельном создании ускорителя браузера необходимо создать XML файл в соответствии со спецификацией OpenService Format Specification for Accelerators (http://msdn.microsoft.com/en-us/library/cc304163(VS.85).aspx). Этот файл должен размещать не в локальной системе, а на веб-сервере. Для установки ускорителя следует также добавить кнопку "Установить ускоритель", связанную с вызовом метода 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 -дескриптора ускорителя.

  1. Для выполнения данного задания необходимо с помощью Visual Web Developer 2008 Express (запускается от имени Администратора) создать веб-сайт, например http://localhost/Accelerator/ .
  2. Далее, с помощью комбинации клавиш <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:openServiceDescription. Внутри него описывается обязательной для ускорителя пространство имен http://www.microsoft.com/schemas/openservicedescription/1.0.

    С помощью элемента 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 "Не определено";
    }
    
    ?>
  3. Для регистрации ускорителя можно создать на веб-сайте http://localhost/Accelerator/ HTML документ, содержащий, например, кнопку следующего вида:

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

Самостоятельное задание

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