diff --git a/src/vs/workbench/contrib/webview/browser/webviewElement.ts b/src/vs/workbench/contrib/webview/browser/webviewElement.ts index b5a88e8158d8e..c6dc1447434ef 100644 --- a/src/vs/workbench/contrib/webview/browser/webviewElement.ts +++ b/src/vs/workbench/contrib/webview/browser/webviewElement.ts @@ -59,13 +59,16 @@ export class IFrameWebview extends BaseWebview implements Web this._register(this.on(WebviewMessageChannels.loadLocalhost, (entry: any) => { this.localLocalhost(entry.origin); })); + + this.element!.setAttribute('src', `${this.externalEndpoint}/index.html?id=${this.id}`); } - protected createElement(options: WebviewOptions, contentOptions: WebviewContentOptions) { + protected createElement(options: WebviewOptions, _contentOptions: WebviewContentOptions) { + // Do not start loading the webview yet. + // Wait the end of the ctor when all listeners have been hooked up. const element = document.createElement('iframe'); element.className = `webview ${options.customClasses || ''}`; element.sandbox.add('allow-scripts', 'allow-same-origin', 'allow-forms'); - element.setAttribute('src', `${this.externalEndpoint}/index.html?id=${this.id}`); element.style.border = 'none'; element.style.width = '100%'; element.style.height = '100%'; diff --git a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts index 31e1e26d27a9a..2ac25da67cd68 100644 --- a/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts +++ b/src/vs/workbench/contrib/webview/electron-browser/webviewElement.ts @@ -267,9 +267,14 @@ export class ElectronWebviewBasedWebview extends BaseWebview impleme this.styledFindWidget(); } + + this.element!.preload = require.toUrl('./pre/electron-index.js'); + this.element!.src = 'data:text/html;charset=utf-8,%3C%21DOCTYPE%20html%3E%0D%0A%3Chtml%20lang%3D%22en%22%20style%3D%22width%3A%20100%25%3B%20height%3A%20100%25%22%3E%0D%0A%3Chead%3E%0D%0A%3Ctitle%3EVirtual%20Document%3C%2Ftitle%3E%0D%0A%3C%2Fhead%3E%0D%0A%3Cbody%20style%3D%22margin%3A%200%3B%20overflow%3A%20hidden%3B%20width%3A%20100%25%3B%20height%3A%20100%25%22%20role%3D%22document%22%3E%0D%0A%3C%2Fbody%3E%0D%0A%3C%2Fhtml%3E'; } protected createElement(options: WebviewOptions) { + // Do not start loading the webview yet. + // Wait the end of the ctor when all listeners have been hooked up. const element = document.createElement('webview'); this._elementFocusImpl = element.focus.bind(element);