From fee05b2bf612086cbad17e2e1f924bcd116a8e80 Mon Sep 17 00:00:00 2001 From: Matt Bierner Date: Tue, 28 Feb 2017 15:19:02 -0800 Subject: [PATCH] Restore document write --- src/vs/workbench/parts/html/browser/webview-pre.js | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) 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 () {