Компонент ExtEmbed предназначен для встраивания на Турбо-страницу виджетов, требующих для своей работы загрузку внешних скриптов. ExtEmbed оборачивает содержимое виджета в безопасную песочницу c iframe.
ExtEmbed принимает в качестве пропсов:
- html (обязательный) - строка, содержащая html-разметку, которую необходимо поместить в песочницу;
- iframeClass (опциональный) - строка, содержащая css-класс, который будет установлен тегу iframe для стилизации виджета (например, указания размеров);
- iframeWidth и iframeHeight (опциональные) - строки для установки тегу iframe ширины и высоты соответственно;
- isLoaded (опциональный) - параметр логического типа, с помощью которого ExtEmbed "поймет", что виджет загрузился, и скроет выводимую поверх виджета паранджу о загрузке. При отсутствии параметра ExtEmbed будет опираться на событие iframe.onload для скрытия паранджи.
- onMessage (опциональный) - callback-функция, которая будет вызвана при обработке сообщения postMessage
В случае необходимости обработки сообщений от виджета
можно передать функцию для обработки сообщений в onMessage компонента ExtEmbed для коммуникации. Компонент ExtEmbed подписывается на сообщения в формате postMessage. Эти сообщения фильтруются и обрабатываются только сообщения от дочерних iframe. При получении таких сообщений вызваются callback-функции, переданные в пропс onMessage
. Для обработки на стороне виджета нужно сделать 1 общий обработчик, который внутри будет рабирать сообщени по типам. Этот обработчик следует передавать в onMessage
компонента ExtEmbed. Пример использования можно найти тут