Ask the assistant
0/400
Your question is processed by an AI service and kept to improve answers. Do not enter personal data.

    HtmlEmbed

    This page has not been translated into English yet. The Russian original is below.

    Авторский HTML на странице сайта: карта, форма записи, кнопка оплаты — один файл из data/web/html/ проекта, показанный inline.

    Тип: leaf Только веб: на Flutter-рендере элемент — no-op, приложение ничего не загружает.

    HtmlEmbed src:"data/web/html/booking.html" height:520 requiresConsent:"marketing"

    Параметры

    Параметр Тип Default Описание
    src string — Файл вставки полным путём от корня проекта : data/web/html/… . Внешний адрес не принимается
    requiresConsent "analytics" | "marketing" — Категория согласия: вставка ждёт разрешения категории (см. Consent )
    isolate bool false Отдать файл в iframe -песочницу вместо разбора в страницу
    width , height длина — Размер блока. Высоту задавайте всегда: файл приходит после страницы, и без неё блок сначала пуст, а потом сдвигает всё, что ниже

    Как это исполняется

    Компилятор опускает элемент до плейсхолдера <div data-reeel-html="…"> (плюс data-consent при requiresConsent ). Лоадер рантайма страницы наполняет плейсхолдеры после гидрации, в порядке документа: <script> -узлы пересоздаются (вставленные через innerHTML они не исполняются), так что скрипты внутри файла работают.

    Доменный гейтинг — тот же, что у Script : вставка исполняется на адресах самого сайта — <slug>.reeel.site и подключённом домене; под корнем платформы ( *.app.reeel.dev и др.) в HTML нет ни содержимого, ни лоадера.

    Изоляция: isolate:true

    По умолчанию файл разбирается прямо в странице : его скрипты видят всё, что видит страница, — включая хранилище с токеном Session , — а стили текут в обе стороны. isolate:true опускает элемент до <iframe sandbox="allow-scripts allow-forms allow-popups"> : у вставки свой origin, ни хранилища, ни cookie, ни DOM страницы она не видит.

    HtmlEmbed src:"data/web/html/chat.html" isolate:true height:480

    Цена: рамка не растёт по содержимому (нужен height ; без width она занимает строку целиком), вставка не может рисовать за пределами своего блока и не имеет собственного хранилища. Для всего стороннего — правильный режим.

    Примеры

    Внешний виджет одним файлом

    data/web/html/map_widget.html
    HtmlEmbed src:"data/web/html/map_widget.html" height:360

    Виджет после согласия

    HtmlEmbed src:"data/web/html/booking.html" height:520 requiresConsent:"marketing"

    Плейсхолдер ждёт категорию marketing так же, как её ждёт Script , — и наполняется без перезагрузки, когда посетитель разрешает.

    Правила

    • MUST file — голое имя внутри data/web/html/ ; относительные пути и схемы отвергаются, как и у Script src: .
    • MUST Виджет, ставящий сторонние cookie или тянущий трекеры, идёт с requiresConsent .
    • MUST NOT Не ждите вставки на платформенном адресе — это гейтинг, а не баг.

    See also

    • Script — авторский JavaScript на странице
    • Consent — баннер согласия и категории
    DOCS
    dark_mode_baseline
    RU/EN
    menu_baseline