diff --git a/src/vs/workbench/parts/html/browser/webview-pre.js b/src/vs/workbench/parts/html/browser/webview-pre.js
index 7ed9ef3ffa1..f26feff54fc 100644
--- a/src/vs/workbench/parts/html/browser/webview-pre.js
+++ b/src/vs/workbench/parts/html/browser/webview-pre.js
@@ -126,13 +126,18 @@ document.addEventListener("DOMContentLoaded", function (event) {
const newFrame = document.createElement('iframe');
newFrame.setAttribute('id', '_target');
newFrame.setAttribute('frameborder', '0');
- newFrame.setAttribute('sandbox', 'allow-scripts allow-forms');
- // set DOCTYPE for newDocument explicitly as DOMParser.parseFromString strips it off
- // and DOCTYPE is needed in the iframe to ensure that the user agent stylesheet is correctly overridden
- newFrame.setAttribute('srcdoc', '\n' + newDocument.documentElement.innerHTML);
+ newFrame.setAttribute('sandbox', 'allow-scripts allow-forms allow-same-origin');
newFrame.style.cssText = "margin: 0; overflow: hidden; position: absolute; width: 100%; height: 100%; display: none";
document.body.appendChild(newFrame);
+ // write new content onto iframe
+ newFrame.contentDocument.open('text/html', 'replace');
+ // set DOCTYPE for newDocument explicitly as DOMParser.parseFromString strips it off
+ // and DOCTYPE is needed in the iframe to ensure that the user agent stylesheet is correctly overridden
+ newFrame.contentDocument.write('');
+ newFrame.contentDocument.write(newDocument.documentElement.innerHTML);
+ newFrame.contentDocument.close();
+
// workaround for https://github.com/Microsoft/vscode/issues/12865
// check new scrollTop and reset if neccessary
newFrame.contentWindow.addEventListener('DOMContentLoaded', function () {