5.2 Подключение обработчика событий и получение данных из формы

Для получения событий и введенных данных из открытого окна редактора структурированных данных внутри <iframe>, необходимо до открытия <iframe> подключить обработчик событий.

Пример реализации в JavaScript:

<script>
    // Подключение обработчика событий, выполняется ДО открытия iframe 
    window.addEventListener('message', handlePostMessage)
    // Обработчик событий редактора структурированных данных 
    async function handlePostMessage(event) {
        //здесь указать действия, которые необходимо выполнить с данными, полученными из окна iframe 
        //при наступлении события message. Для получения данных использовать следующие свойства объекта event: 
        // event.origin — строка, адрес источника входящего события 
        // event?.data?.data.xml – строка, текст сформированного в редакторе XML-файла 
        // event?.data?.data.action – строка, содержит команду действия, произошедшего в окне редактирования 
        // event?.data?.data.errors – массив, ошибки сохранения XML, если они есть 
    }
</script>
<iframe class="editor" id="editor" src="http://10.77.142.21:84/#/constructor/selector/?theme=light"></iframe>

В функции, выполняемой при наступлении события message, следует указать действия, выполняемые с полученными данными. При этом можно обратиться к следующим свойствам объекта event:

  • event.origin (строка) — адрес источника входящего события (пример возвращенного значения: "http://10.77.142.21:84" );
  • event?.data?.data.xml (строка) – текст сформированного в редакторе XML-файла (пример возвращенного значения:
    "<?xml version="1.0" encoding="UTF-8"?><doc:Документ xmlns:doc="urn:Doc01-004-00001:DocumentMeta:v0.1.0"…всё_тело_XML_в_соответствии_с_заполненной_формой_структурированных_данных…</doc:Документ> ";
  • event?.data?.data.action (строка) – возвращает код действия, произошедшего в окне редактирования.
    Возможные значения, возвращенные в свойстве «event?.data?.data.action»:
    • "portalReady" — произошло событие успешной загрузки формы,
    • "XMLSend" — нажата кнопка «Сохранить данные» формы редактирования (событие происходит при нажатии кнопки пользователем или после передачи в форму команды pressSaveDocumentBtn).
  • event?.data?.data.errors ([массив]) – ошибки при сохранении XML, например список незаполненных обязательных полей (пример возвращенного значения при 2 незаполненных полях формы структурированных данных:
    ["/Документ/ДанныеДокумента/СообщенияДокумента/ВыдачаПоручения/ПредметыСобытия/Поручение/ДанныеДляВизуализации/ТекстПоручения","/Документ/ДанныеДокумента/СообщенияДокумента/ВыдачаПоручения/ПредметыСобытия/Поручение/ДанныеДляКоординации/СрокПоручения"]).
Последнее изменение: Wednesday, 26 June 2024, 12:43