diff --git a/src/generators/nodes/Element.ts b/src/generators/nodes/Element.ts index 1882b1b77a..b94cf88a65 100644 --- a/src/generators/nodes/Element.ts +++ b/src/generators/nodes/Element.ts @@ -434,7 +434,7 @@ export default class Element extends Node { if (isVoidElementName(node.name)) return open + '>'; if (node.name === 'script') { - return `${open}>${node.data}`; + return `${open}>${node.children[0].data}`; } return `${open}>${node.children.map(toHTML).join('')}`; diff --git a/src/generators/server-side-rendering/visitors/Element.ts b/src/generators/server-side-rendering/visitors/Element.ts index 7ea2b3a7cd..9ef9289d88 100644 --- a/src/generators/server-side-rendering/visitors/Element.ts +++ b/src/generators/server-side-rendering/visitors/Element.ts @@ -69,7 +69,7 @@ export default function visitElement( if (node.name === 'textarea' && textareaContents !== undefined) { generator.append(textareaContents); } else if (node.name === 'script') { - generator.append(escape(node.data)); + generator.append(node.children[0].data); } else { node.children.forEach((child: Node) => { visit(generator, block, child); diff --git a/src/parse/state/tag.ts b/src/parse/state/tag.ts index 1b55617c33..8b701cae1d 100644 --- a/src/parse/state/tag.ts +++ b/src/parse/state/tag.ts @@ -226,8 +226,11 @@ export default function tag(parser: Parser) { element.end = parser.index; } else if (name === 'script') { // special case - element.data = parser.readUntil(new RegExp(``)); - parser.eat(``, true); + const start = parser.index; + const data = parser.readUntil(/<\/script>/); + const end = parser.index; + element.children.push({ start, end, type: 'Text', data }); + parser.eat('', true); element.end = parser.index; } else if (name === 'style') { // special case