12.5 Поведение обработки ссылок – Навигации между картами
Следующий процесс описывает модель ссылок для перехода между картами в WML. Все устройства вывода должны выполнять этот процесс, или тот, который не отличим от этого.
12.5.1 Задача Go
Процесс выполнения задачи go включает следующие шаги:
Если порождающая задача содержит элемент setvar, то имя и значение переменной в таком элементе setvar конвертируется в простую строку подстановкой всех ссылок на переменные. Результирующая коллекция имен переменных и значений сохраняются во временной памяти для дальнейшей обработки. Смотрите раздел 10.3.1 для получения подробной информации по подстановке переменной.
Целевой адрес URI идентифицируется и извлекается устройством ввода. Значение атрибута URI конвертируется в простую строку заменой всех ссылок на переменные.
Параметры управления доступом для выводимой деки обрабатываются так, как определено в разделе 11.3.1.
Карта для посещения находится с помощью имени фрагмента, определенного в адресе URI.
Если нет определенного имени фрагмента, как части адреса URI, то первая карта в деке является картой назначения.
Если имя фрагмента было идентифицировано, и карта имеет атрибут name, который идентичен имени фрагмента, то такая карта является картой назначения.
Если имя фрагмента не может быть связана с особой картой, то первая карта в деке является картой назначения.
Назначения переменных в результате обработки, сделанной в шаге 1 (элемент setvar), применяется для текущего контекста обозревателя.
Если карта назначения содержит атрибут newcontext, то содержание текущего обозревателя повторно инициализируется как это описано в разделе 10.2.
Карта назначения помещается в стек истории.
Если карта назначения определяет связь встроенного события onenterforward, то задача, связанная с событием выполняется, и обработка останавливается. Смотрите раздел 9.10 для получения подробной информации.
Если карта назначения содержит элемент timer, то таймер запускается как описано в разделе 11.7.
Карта назначения выводится на экран с использованием текущего состояния переменной, и обработка останавливается.
12.5.2 Задача Prev
Процесс выполнения задачи prev состоит из следующих шагов:
Если производящая задача содержит элемент setvar, то имя и значение переменной в каждом элементе setvar конвертируется в простую строку подстановкой всех ссылок на переменные. Результирующая коллекция имен и значений сохраняется во временной памяти для последующей обработки. Смотрите раздел 10.3.1 для получения подробной информации по подстановке переменной.
Целевой адрес URI идентифицируется и выводится устройством вывода. Стек истории пополняется, и целевой адрес URI находится на вершине стека истории. Если нет предыдущей карты в стеке истории, то обработка останавливается.
Карта назначения находится с помощью имени фрагмента, определенного в адресе URI.
Если не было определено имени фрагмента, как части адреса URI, то первая карта в деке является картой назначения.
Если имя фрагмента идентифицировалось, и карта имеет атрибут name, который является идентичным имени фрагмента, то такая карта является картой назначения.
Присвоение переменных в результате обработки, совершенной в шаге 1 (элемент setvar), применяются к текущему контексту обозревателя..
Если карта назначения определяет связь встроенного события onenterbackward, то задача, связанная с событием, выполняется, и обработка останавливается. Смотрите раздел 9.10 для получения подробной информации.
Если карта назначения имеет элемент timer, то таймер запускается как это определено в разделе 11.7.
Карта назначения выводится на экран с использованием текущего состояния переменной, и обработка останавливается.
12.5.3 Задача Noop
Для задачи noop обработка не выполняется.
12.5.4 Задача Refresh
Процесс выполнения задачи refresh состоит из следующих шагов:
Для каждого элемента setvar, имя и значение переменной в каждом элементе setvar конвертируется в простую строку подстановкой всех ссылок на переменные. Смотрите раздел 10.3.1 для получения более подробной информации по подстановки переменных.
Присваивание переменных в результате обработки, сделанной в шаге 1 (элемент setvar) применяется для текущего контекста обозревателя.
Если карта содержит элемент timer, то таймер запускается, как это определено в разделе 11.7.
Текущая карта повторно выводится на экран с использованием текущего состояния переменной, и обработка останавливается.
12.5.5 Ошибка выполнения задачи
Если задача сбилась в выводе целевого адреса URI или ограничения управления доступом защищают от успешного перехода между картами, устройство вывода должно сообщать пользователю об этом, и выполнять следующие действия:
Открытая карта остается текущей картой.
Никаких изменений не происходит для контекста браузера, включая любое незаконченное присвоение переменных или обработка newcontext.