Не пора ли ввести в определение гипертекста новое понятие- гиперактивность

Гипер с греческого значит «над». Гипертекст буквально переводится как «текст, находящийся над чем то». Гипертекст отличается от текста наличием гиперссылок (называемых также просто ссылками или линками). Они  служат для связи одного гипертекста с другим. Чего же боле?

Семантика ссылки — связь фрагмента гипертекста с другими гипертекстами.

Веб- вещь в значительной степени ограниченная браузером и настолько плохо работающая с другими приложениями, что многие заключают, что универсальность операционных систем устарела (WMD). Концепция терминала продолжает набирать популярность вместе с ростом веб сервисов. И по сути, хотя к десктопу можно подключить тысячами разных способов миллионы устройств, все это оказывается не нужным. Десктоп остается пишущей машинкой. Вместо девайсов гораздо дешевле и быстрее подключать сервисы.

Все это означает- семантика ссылок значительно расширяется. Если раньше ссылка указывала, как правило, на другой текст, который можно было почитать, или картинку или аудио-, видеофайл, который можно было прослушать и просмотреть, что называлось мультимедиа, то веб сервисы должны позволять вам осуществлять действия не в браузере или на устройстве (например, позвонить или отправить почту), а в окружающем нас мире, и без всякой возни с драйверами и походами в магазин.

Мобильные терминалы претендуют на роль волшебных палочек, пропускающих вас в общественный транспорт и оплачивающих проезд с вашей карты, включающих и выключающих бытовые приборы, и многое другое, на что стационарный десктоп не способен.

Нужно ли такое расширение для веба, учитывающее то, что ссылка- это не документ, а действие?

Возьмем, к примеру, Андроид. В Андроиде связь с программами, а значит- и внешними сервисами может осуществляться интентами. Очень приближенно интенты можно считать теми же ссылками, но они имеют дополнительные атрибуты- действие (action) и категорию (category), что делает эти ссылки несущими семантику действия, соединяющего два объекта. Action- это глагол, между двумя объектами.

Можно было бы в  HTML добавить атрибуты «action» и «category», в соответствии с которым браузер передавал бы ссылку в другое приложение. Теперь как это могло бы работать. Например, на сайте есть информация о каком то мероприятии, например, конференции и ссылка для записи для участия. Обычный десктопный путь- это предложить для заполнения 5-10 полей, что с успехом можно сделать на десктопе или ноутбуке и затем вручную отметить в персональном планировщике времени, повторив процедуру еще раз. Это не работает в случае с мобильной версии сайта- он должен быть доработан так, чтобы сразу размещать информацию в персональный планировщик времени, или, например, сервис Google Calendar- одним кликом (тапом). Это можно сделать, но у пользователя, скорее всего, не будет выбора, куда размещать информацию о мероприятии (в PIM или в сервис) и его могут заставить завести аккаунт в календаре, чего он, может быть, не хочет.

Вместо этого, нужно поставить ссылку типа <a href=»» action=»INSERT» category=»CALENDAR» > и все. (Справка по HTML: «a» это сокращение слова «anchor»). Браузер мог бы тогда не показывать ссылки, которые он не понимает, и даже предлагать устанавливать новые приложения для обработки новых действий и категорий. Это не что-то новое, это описание того, как устроено взаимодействие приложений в Андроиде, чем то напоминающее взаимодействие программ в unix в командной строке (шелле) — то есть опять же, ничего нового.

Конечно, HTML красив простотой связи, как академический Паскаль прост в сравнении с некоторыми современными языками. Этого достаточно, если только мы не пытаемся выйти за рамки браузера. Но мы ведь хотим, не так ли?

Как Гугл расширяет схемы

В IE, или, точнее, в MS Windows со времен XP, схемы расширяются написанием специальных COM объектов и последующей их регистрацией. Точно также в Андроиде любое приложение может реализовывать стандартные или новые схемы (протоколы в терминах MS) и заявлять о них в манифесте.

Благодаря системе фильтров интентов, браузер Андроида  обращения к сайтам может передавать другим приложениям. Для этого нужно установить приложение с манифестом, показывающем, что оно обрабатывает схему HTTP какого-то хоста:

<intent-filter>
<data android:scheme="http" android:host="commandus.com"/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>

Манифест фильтрует действия и категории, которое готово обработать приложение (в примере указано, что интересует действие VIEW). Это позволяет открыть по ссылке специально написанное приложение, которому будут переданы из браузера параметры. Таким образом работают ссылки схем mailto:, tel:, sms:-они открывают нужные приложения.

Схему можно указать любую- например:

<intent-filter>
<data android:scheme="command"/>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT"/>
<category android:name="android.intent.category.BROWSABLE"/>
</intent-filter>

И на веб-странице тогда можно писать:

<a href="command://door/open?password=sesame">Открыть</a>

Есть мнение, что чтобы не смущать посетителей, у которых в системе (Андроид или Windows, не важно) не зарегистрирован обработчик протокола command, нужно использовать первый способ- регистрировать домен и делать привязку к нему. Тогда можно предложить альтернативу. Есть и другое мнение- что схемы нужно делать свои, так как это сбивает с толку разработчиков- есть или нет обработчик, неясно.

В браузере нажатие на ссылку всегда означает действие VIEW в категории BROWSABLE. Если мы хотим выделить другие действия, мы можем добавить нужные нам недостающие атрибуты (action, category), или передать в параметрах. В первом случае HTML будет, правда, невалиден (тоже касается и применения незарегистрированных в IANA схем, как command), что, правда, совсем не страшно.

Другим, более утонченным (или извращенным)  способом является обертка браузера- а именно, именно ваш сайт можно открыть специально написанным приложением, которое запускает браузер, в котором предварительно перехватывает действия и обрабатывает их особым образом.  Это часто практикуется потому, что все желают разместить иконку приложения в коммуникаторе пользователя. По этому поводу есть кумекания.

Web intents

Гугл поддерживает проект Web Intents, который делает все это в Chrom’е. У Mozilla есть аналогичный проект Web Activities. Все это позволит пользователям десктопов обрастать веб-сервисами точно также, как они обрастают сейчас всякими утилитами. На хабре есть перевод статьи, объясняющий, зачем это надо.

Comments

comments

Powered by Facebook Comments

Не пора ли ввести в определение гипертекста новое понятие- гиперактивность: 1 комментарий

  1. Уведомление: Web Intents | Commandus blog

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *