Skip to content

Commit 590ddbf

Browse files
committed
fix(prerender): ensure meta charset is first element in document.head
1 parent adc94ce commit 590ddbf

2 files changed

Lines changed: 24 additions & 0 deletions

File tree

src/compiler/html/optimize-html.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ import { inlineExternalAssets } from './inline-external-assets';
66
import { inlineLoaderScript } from './inline-loader-script';
77
import { minifyInlineScripts, minifyInlineStyles } from './minify-inline-content';
88
import { optimizeSsrStyles } from '../style/optimize-ssr-styles';
9+
import { relocateMetaCharset } from './relocate-meta-charset';
910
import { updateCanonicalLink } from './canonical-link';
1011

1112

@@ -98,6 +99,8 @@ export async function optimizeHtml(
9899
promises.push(assetVersioning(config, compilerCtx, hydrateTarget, windowLocationPath, doc));
99100
}
100101

102+
relocateMetaCharset(doc);
103+
101104
await Promise.all(promises);
102105
}
103106

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
2+
3+
export function relocateMetaCharset(doc: Document) {
4+
if (!doc || !doc.head) {
5+
return;
6+
}
7+
8+
let charsetElm = doc.head.querySelector('meta[charset]');
9+
if (charsetElm == null) {
10+
// doesn't have <meta charset>, so create it
11+
charsetElm = doc.createElement('meta');
12+
charsetElm.setAttribute('charset', 'utf-8');
13+
14+
} else {
15+
// take the current one out of its existing location
16+
charsetElm.remove();
17+
}
18+
19+
// ensure the <meta charset> is the first node in <head>
20+
doc.head.insertBefore(charsetElm, doc.head.firstChild);
21+
}

0 commit comments

Comments
 (0)