diff --git a/src/parse/state/tag.ts b/src/parse/state/tag.ts index dae32bc3df..0ba2e6363d 100644 --- a/src/parse/state/tag.ts +++ b/src/parse/state/tag.ts @@ -213,6 +213,7 @@ export default function tag(parser: Parser) { parser.eat('>', true); if (selfClosing) { + // don't push self-closing elements onto the stack element.end = parser.index; } else if (name === 'textarea') { // special case @@ -223,8 +224,14 @@ export default function tag(parser: Parser) { ); parser.read(/<\/textarea>/); element.end = parser.index; + } else if (name === 'script' || name === 'style') { + // special case + const start = parser.index; + const data = parser.readUntil(new RegExp(``)); + const end = parser.index; + element.children.push({ start, end, type: 'Text', data }); + parser.eat(``, true); } else { - // don't push self-closing elements onto the stack parser.stack.push(element); } }