Центр помощи

Расширенная обработка ссылок в теле HTML-документа

Общие сведения

Инфо-Навигатор позволяет выполнять ряд дополнительных действий при обработке страниц HTML, когда пользователь выполняет переход по гиперссылке.

Для выполнения действий с окном Инфо-Навигатора используются команды протокола cmd.

<a href="cmd:new_window">Открыть новое окно</a>

При использовании Инфо-Навигатора в составе программы Инфо-Бухгалтер версии 8 и 10 доступны команды, осуществляющие действия путеводителя.

<a href="ib:menu(Операции:Фильтр)">Фильтр хоз. операций</a>

Протокол cmd.

Поддерживается ряд команд как характерных для любого браузера, так и специфичных для Инфо-Навигатора.

Пример.

<a href="cmd:find_cont">Показать эту страницу в содержании</a>
<a href="cmd:exec(http://ib.ru/)">Открыть сайт разработчика</a>
<a href="cmd:exec(subdir\some_utility.exe,runas,*)">Запустить утилиту от имени администратора</a>
<a href="cmd:exec(subdir\program.exe,,workdir)">Запустить программу</a>
<a href="cmd:exec(somewhere\myfile.txt,show_in_explorer)">Перейти к расположению файла</a>
<a href="cmd:setvar(likethis,true)">Мне нравится</a>

Если страницу HTML планируется просматривать не только в Инфо-Навигаторе, но и в других браузерах, то ссылки с использованием протокола cmd можно удалить, используя javascript. Для определения того, что страница просматривается с помощью Инфо-Навигатора можно проверять значение атрибута элемента body data-cmd_receiver. Инфо-Навигатор задает значение атрибута равное IDN.

Протоколы, задаваемые приложением.

Инфо-Навигатор может работать в составе приложения (в качестве библиотеки DLL) и выполнять функции специфические для этого приложения. Эта возможность используется для реализации путеводителя, т.е. выполнения действий программы при нажатии гиперссылок на странице HTML.

Для работы страниц HTML вне приложения, поддерживающего протокол ссылки, может применяться подмена ссылки с использованием javascript. Для обнаружения работы в контексте приложения используется атрибут элемента body data-insideof.

Пример.

<a href="filter.bmp" data-althref="ib:menu(Операции:Фильтр)">Фильтр</a>

В этом примере ссылка осуществляет переход к картинке filter.bmp, а ссылка с командой протокола ib помещена в атрибут data-althref. Подключенный на странице javascript проверяет атрибут элемента body data-insideof=ib8, чтобы обнаружить режим работы в контексте Инфо-Бухгалтер 8. Если контекст Инфо-Бухгалтер 8 обнаружен, то javascript заменяет значения атрибута href на значения атрибута data-althref для всех ссылок на странице.

Такая техника замены преследует следующие цели:

Инфо-Бухгалтер 8 устанавливает атрибут элемента body data-insideof=ib8 и поддерживает команды протокола ib для окна путеводителя. Описание команд протокола ib в контексте Инфо-Бухгалтер 8 указано в функции ПУТЕВОДИТЕЛЬ.

Инфо-Бухгалтер 10 устанавливает атрибут элемента body data-insideof=ib10 и поддерживает команды протокола ib для окна путеводителя. Команды протокола ib в Инфо-Бухгалтер 10 отличаются от команд одноименного протокола в Инфо-Бухгалтер 8. Подробнее о командах протокола ib в Инфо-Бухгалтер 10 см. здесь. В среде разработки И++ используется отдельная справочная система с возможностями путеводителя. Среда разработки устанавливает атрибут элемента body data-insideof=ippide и поддерживает команды протокола ippide.

Переменные Инфо-Навигатора.

Инфо-Навигатор поддерживает установку и хранение значений переменных в контексте сессии своего использования. Установка значения переменной может быть выполнена с помощью команды cmd:setvar(<имя>,<значение>). Также Инфо-Бухгалтер может программно устанавливать и считывать значения переменных для справки и путеводителя.

При загрузке страницы Инфо-Навигатор помещает текущие значения переменных в виде атрибутов элемента body data-idn_var_<имя переменной>. Например, переменной likethis будет соответствовать имя атрибута data-idn_var_likethis. Подключенные к странице скрипты могут проверить наличие интересующих их переменных, получить их значения и выполнить соответствующую обработку.

В частности, переменные Инфо-Навигатора могут использоваться для управления значениями опций (элемент input, у которого type="checkbox"). Начальное значение опции может быть установлено при загрузке страницы на основании атрибутов элемента body. При переключении опции (событие onclick) значение соответствующей переменной может быть изменено с помощью команды установки переменной:

<script>
  function toggleCheckbox(checkbox)
  {
     window.location.href = "cmd:setvar(" + checkbox.id + "," + checkbox.checked + ")";
  }
</script>

В примере в качестве имени переменной используется id опции, а значение определяется атрибутом checked, равным "true" или "false".

Встроенные функции Инфо-Навигатора.

Инфо-Навигатор позволяет выполнять некоторые действия, недоступные из скриптов. Вызов встроенной функции осуществляется с помощью команды cmd:invoke:<имя функции>(<параметры>). Результат выполнения функции заносится в атрибут data-invoke_result элемента body текущего документа.

<script>
  function optionalFileExists(filepath)
  {
     window.location.href = "cmd:invoke:exists(" + filepath + ")";

     var attr = document.body.getAttribute("data-invoke_result")
     if (attr == null)
        return false;
     return (attr == "true");
  }
</script>

См также: