Миграция облачного редактора на Web Editor API
Что изменилось
Раньше было управление через WopiApi для уже созданного iframe. Теперь редактор может как управлять уже созданным iframe так и сам создавать iframe настраивая через builder-паттерн.
| WopiApi | Web Editor API | |
|---|---|---|
| Кастомизация UI | Ограниченная настройка, нет поддержки пользовательских элементов UI | Гибкое управление интерфейсом, добавление вкладок, кастомные панели |
| Документация | PDF-файлы, мало живых примеров | Современная, с примерами |
| Гибкость архитектуры | Отдельный модуль для управления облачным редактированием подразумевающий лишь ограниченное расширение | Модульная, единый подход, легко наращивать функциональность |
Управление редактором
Раньше, через WopiApi:
Создавался объект управления редактором после загрузки iframe
const wopiApi = new WopiApi(officeFrame.contentWindow, '*')
Теперь, через Web Editor API
Создание объекта управления для уже загруженного iframe
const { editorApi } = await new EditorBuilder()
.withCloudMode()
.withLicenseToken('xxx.xxx.xxx') // укажите свой лицензионный ключ
.mount(iframe, 'http://localhost:9002');
Создание объекта управления с конфигурацией и монтированием iframe
const { editorApi } = await new EditorBuilder()
.withCloudMode()
.withLicenseToken('xxx.xxx.xxx')
.withIframeOrigin('http://localhost:9002')
.withHostOrigin('http://localhost:9001')
// В качестве второго параметра передается адрес, по которому доступен веб редактор.
// В данном случае указан адрес локально запущенного редактора.
.mount(containerForIframe, 'http://localhost:9002');
Подробнее про настройку и запуск
Настройка происходит через with- методы EditorBuilderCloud.
Работа с документом
| WopiApi | WebEditorApi | |
|---|---|---|
| API events | ||
| Событие начала инициализации редактора. | | |
| Событие готовности редактора. | | |
| Событие ошибки в редакторе. | | |
| Событие начала принудительного сохранения документа. | | |
| Событие окончания принудительного сохранения документа. | | |
примечание API подписки на события редактора EditorApi#events | ||
| API actions | ||
| Уведомление о необходимости перезагрузить страницу с редактором. Инициируется редактором. | | |
| Уведомление о необходимости редиректа страницы с редактором. Инициируется редактором. | | |
| Запрос принудительного сохранения документа. Инициируется внешним ресурсом. | | |
| Запрос отключения перехвата фокуса редактором. | | |
примечание Принудительное сохранение документа saveByRequest | ||
| PluginsAPI | ||
Интерфейсы wopiApi.pluginsApi и webEditorApi.plugins совпадают. | | |
примечание | ||
Итоги
-
Редактор теперь может сам создавать iframe.
-
Конфигурируйте через builder — это проще и безопаснее.
-
Указывайте
hostOriginдля большей безопасности. -
Полный API для работы с документом доступен после открытия.
-
Интеграция стала удобнее и понятнее.