diff --git a/docs/arbitrary-html-embed-plan.md b/docs/arbitrary-html-embed-plan.md new file mode 100644 index 00000000..e02466a8 --- /dev/null +++ b/docs/arbitrary-html-embed-plan.md @@ -0,0 +1,95 @@ +# Вставка произвольного HTML/CSS/JS в страницы — анализ и подходы + +> Статус: **черновик / обсуждение**. Решение по модели изоляции ещё не принято — см. раздел «Развилка». +> Исходный кейс: нужно вставлять трекер (счётчик аналитики) на вики-страницы. + +## 1. Почему «из коробки» произвольный HTML вставить нельзя + +Контент страницы в Docmost хранится не как HTML, а как **ProseMirror JSON** (документ TipTap, синхронизируется через Yjs). Любой путь, которым контент попадает в страницу — ручной ввод, вставка из буфера (paste), импорт Markdown/HTML — проходит парсинг строго по схеме редактора: + +`apps/server/src/common/helpers/prosemirror/html/generateJSON.ts:45` + +```ts +PMDOMParser.fromSchema(schema).parse(doc.body, options) +``` + +`PMDOMParser.fromSchema` оставляет только те теги, для которых в схеме есть нода/марк с правилом `parseHTML` (`p`, `h1–h6`, списки, `blockquote`, `code`/`pre`, `a`, `strong`/`em`, таблицы, картинки, callout и т.п.). Всё остальное — `
`, `