Embed
Встраивание - это простой способ включить приложение на ваш сайт. Добавьте следующий код на ваш сайт:
<iframe id="butterfly" src="https://web.butterfly.linwood.dev/embed" width="100%" height="500px" allowtransparency="true"></iframe>Варианты
Заголовок раздела «Варианты»| Вариант | Тип | По умолчанию | Описание |
|---|---|---|---|
| сохранить | Boolean (true, false) | true | Включить сохранение. Если отключено, будет показана только кнопка выхода |
| editable | Boolean (true, false) | true | Включить редактирование. Если отключено, документ будет доступен только для чтения |
| язык | Строка (…, система, пользователь) | user | Язык документа. Если система, то язык будет обнаружен из браузера. Если пользователь, язык будет установлен в предпочтение пользователей |
Messaging
Заголовок раздела «Messaging»The embed uses browser postMessage events. Send messages to the iframe with
iframe.contentWindow.postMessage({ type, message }, origin). Butterfly sends
messages back to the parent window with the same shape:
{ type: string, message?: unknown }.
See the embedding example for a live page that sends messages to the iframe and listens for messages from it.
<iframe id="butterfly" src="https://web.butterfly.linwood.dev/embed?save=true&editable=true" width="100%" height="500"></iframe>
<script> const butterflyOrigin = 'https://web.butterfly.linwood.dev'; const butterfly = document.querySelector('#butterfly');
function sendToButterfly(type, message) { butterfly.contentWindow.postMessage({ type, message }, butterflyOrigin); }
window.addEventListener('message', (event) => { if ( event.origin !== butterflyOrigin || event.source !== butterfly.contentWindow ) { return; }
const { type, message } = event.data ?? {};
if (type === 'save') { const documentBytes = Array.from(message); console.log('Save requested by the embed', documentBytes); }
if (type === 'change') { console.log('Document changed', message); }
if (type === 'getData') { console.log('Current document bytes', message); }
if (type === 'render') { const image = new Image(); image.src = `data:image/png;base64,${message}`; document.body.append(image); } });
butterfly.addEventListener('load', () => { sendToButterfly('getData');
sendToButterfly('render', { x: 0, y: 0, width: 600, height: 400, scale: 1, renderBackground: true, }); });</script>To load document bytes into the embed, send an array of byte values:
sendToButterfly('setData', documentBytes);События
Заголовок раздела «События»Listen for events with window.addEventListener('message', ...).
сохранить
Заголовок раздела «сохранить»The
saveevent is emitted when the user clicks the save button.
Параметры:
message(TypeList<int>): The data of the document.
The
exitevent is emitted when the user clicks the exit button.
Параметры:
message(TypeList<int>): The data of the document.
The
changeevent is emitted when the user changes the document.
Параметры:
message(TypeList<int>): The data of the document.
Call methods with iframe.contentWindow.postMessage(...). Methods that return
data send another message back with the same type.
getData
Заголовок раздела «getData»The
getDatamethod returns the data of the document.
Нет параметров.
Returns: List<int>
setData
Заголовок раздела «setData»The
setDatamethod sets the data of the document.
Параметры:
data(TypeList<int>): The data of the document.
The
rendermethod renders the document to a png image.
Параметры:
x(TypeNumber): The x position of the exported area.y(TypeNumber): The y position of the exported area.width(TypeNumber): The width of the image.height(TypeNumber): The height of the image.scale(TypeNumber): The scale of the image.renderBackground(TypeBoolean): If true, the background will be rendered.
Returns: String (Base64 encoded image)
renderSVG
Заголовок раздела «renderSVG»The
renderSVGmethod renders the document to a svg image.
Параметры:
x(TypeNumber): The x position of the exported area.y(TypeNumber): The y position of the exported area.width(TypeNumber): The width of the image.height(TypeNumber): The height of the image.renderBackground(TypeBoolean): If true, the background will be rendered.
Returns: String (SVG)