| 12345678910111213141516171819202122 |
- /**
- * `v-unwrap` —— 运行时把宿主元素**替换为自己的子节点**(宿主自身消失)。
- *
- * 用途:Vue 用 `v-html` 承载从 v2.9.2 搬运来的 HTML 时会多出一层 `<div>`,
- * 而旧页是把同一段 HTML **直接注入**页签容器(无宿主)⇒ 结构/样式计数不一致。
- * 该指令在挂载后解包,使**运行时 DOM 与 v2.9.2 完全一致**。
- *
- * 注:SSR 不执行指令,故结构对拍工具(`tools/struct_diff*.mjs`)对带 `unwrap-host` 类的
- * 元素做等价**解包**后再比 —— 判据与运行时口径一致。
- */
- import type { Directive } from 'vue'
- function unwrap(el: Element): void {
- const parent = el.parentNode
- if (!parent) return
- while (el.firstChild) parent.insertBefore(el.firstChild, el)
- parent.removeChild(el)
- }
- export const vUnwrap: Directive<HTMLElement> = {
- mounted: (el) => unwrap(el),
- }
|