Содержимое
Index 🔎︎

# Фильтры и формы HTML

В HTML-документах можно использовать все элементы управления и события форм. До данного момента происходило множество событий (например, событий фокусировки), которые не изменялись. Они продолжают импортироваться и экспортироваться как ONFOCUS, ONBLUR и т.д. для JavaScript и как SDONFOCUS, SDONBLUR и т.д. для LibreOffice Basic.

Для всех остальных событий используются общие имена, состоящие из имени интерфейса Listener и имени метода: событие, зарегистрированное в виде XListener::method, экспортируется в виде

SDEvent-XListener-method = "/* event-code */"

Необходимо помнить, что компоненты XListener- и методов вводятся с учётом регистра.

Обработка событий элементов управления выполняется с использованием LibreOffice API. Если настроить обработку события для элемента управления, объект регистрируется как "Listener" для события этого элемента управления. Для этого должен использоваться специальный интерфейс, например, интерфейс XFocusListener, так чтобы он мог реагировать на события фокуса. При возникновении события элемент управления вызывает специальный метод интерфейса, когда элемент управления получает фокус. Затем зарегистрированный объект вызывает программу JavaScript или LibreOffice Basic, которая была назначена этому событию.

Теперь фильтр HTML использует такие интерфейсы слушателя (Listener interfaces) и имена методов, что события можно импортировать и экспортировать по желанию. Таким образом, можно зарегистрировать событие, связанное с изменением фокуса, следующим образом:

<INPUT TYPE=text ONFOCUS="/* code */"

вместо

<INPUT TYPE=text SDEvent-XFocusListener-focusGained="/* code */"

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

<META HTTP-EQUIV="content-script-type" CONTENT="...">

В качестве CONTENT можно использовать, например, "text/x-StarBasic" для LibreOffice Basic или "text/JavaScript" для JavaScript. Если атрибут CONTENT пропущен, используется JavaScript.

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