Компонент SandBox
из библиотеки @wordpress/components
предоставляет изолированную среду для отображения HTML-кода в WordPress с использованием iframe
. Это полезно для безопасного встраивания HTML-контента, который не должен конфликтовать с основными стилями и скриптами сайта.
Компонент SandBox
позволяет:
- Встраивать HTML-код в отдельный
iframe
. - Управлять стилями и скриптами внутри
iframe
. - Задавать название и класс для
iframe
.
Основное использование SandBox
Ниже приведен простой пример использования SandBox
для отображения HTML-контента:
import { SandBox } from '@wordpress/components';
const MySandBox = () => (
<SandBox
html="<p>Здесь будет изолированное содержимое.</p>"
title="Мой песочница"
type="embed"
/>
);
В этом примере создается компонент Sandbox
, в который передается HTML-контент, который будет отображаться внутри iframe. Также задаются атрибуты title
и type
.
Пример использования с кастомными стилями и скриптами
В этом примере добавляются стили и скрипты для iframe, что позволяет более гибко контролировать отображение контента внутри изолированной среды:
import { SandBox } from '@wordpress/components';
const MyCustomSandbox = () => (
<SandBox
html="<div><h1>Привет, мир!</h1><p>Это контент внутри песочницы.</p></div>"
title="Песочница с кастомными стилями"
type="embed"
scripts={["https://example.com/script.js"]}
styles={["body { background-color: #f0f0f0; }"]}
/>
);
Здесь используется массив scripts
, чтобы добавить внешние JavaScript-файлы, и массив styles
, чтобы внедрить CSS в контекст iframe. Эти параметры обеспечивают дополнительные возможности для кастомизации.
Описание параметров (Props)
Давайте подробнее рассмотрим все параметры компонента Sandbox
и их назначение.
- html: string
Содержимое HTML, которое будет отображаться в теле документа внутри iframe. Это основной параметр для передачи HTML-кода.
Обязательный: Нет.
По умолчанию: Пустая строка (""
).
Пример:<p>Контент внутри iframe</p>
. - onFocus: React.DOMAttributes<HTMLIFrameElement>[‘onFocus’]
Колбэк для обработки события фокуса на iframe. Вызывается, когда iframe получает фокус.
Обязательный: Нет.
Пример:onFocus={() => console.log("Iframe is focused")}
- scripts: string[]
Массив URL-адресов скриптов, которые будут внедрены как теги<script>
в конец<body>
документа iframe. Это позволяет добавить сторонние скрипты или кастомный JavaScript.
Обязательный: Нет.
По умолчанию: Пустой массив ([]
).
Пример:scripts={["https://example.com/my-script.js", "https://example.com/another-script.js"]}
- styles: string[]
Массив строк с CSS-стилями, которые будут внедрены в<head>
документа iframe. Это позволяет добавить стили в контекст iframe, не влияя на основной документ.
Обязательный: Нет.
По умолчанию: Пустой массив ([]
).
Пример:styles={["body { background-color: #ff0000; }", "h1 { font-size: 24px; }"]}
- title: string
Атрибут<title>
для документа внутри iframe. Это название будет отображаться в заголовке iframe.
Обязательный: Нет.
По умолчанию: Пустая строка (""
).
Пример:title="Изолированный контент"
- type: string
CSS-класс, который будет применен к элементам<html>
и<body>
внутри iframe. Используется для задания стилей и классов, специфичных для содержимого iframe.
Обязательный: Нет.
По умолчанию: Пустая строка (""
).
Пример:type="embed"
- tabIndex: HTMLElement[‘tabIndex’]
АтрибутtabIndex
, который определяет порядок фокуса для iframe. Это полезно для управления доступностью и навигацией с помощью клавиатуры.
Обязательный: Нет.
Пример:tabIndex={0}
Пример с полным набором параметров
В этом примере показано использование всех параметров компонента Sandbox
:
import { SandBox } from '@wordpress/components';
const FullSandboxExample = () => (
<SandBox
html="<div><h2>Заголовок</h2><p>Контент в iframe с кастомными стилями и скриптами.</p></div>"
title="Полный пример песочницы"
type="embed"
scripts={["https://example.com/external-script.js"]}
styles={["body { color: blue; }"]}
onFocus={() => console.log("Iframe focused")}
tabIndex={1}
/>
);
Заключение
Компонент Sandbox
— это мощный инструмент для создания изолированных окружений в WordPress с помощью iframe. Он позволяет вам встраивать HTML-контент и добавлять кастомные стили и скрипты без влияния на основную страницу. Это особенно полезно для безопасного отображения внешнего контента или интеграции пользовательских компонентов в изолированном пространстве.