diff --git a/src/main/window-manager.ts b/src/main/window-manager.ts index 513dfdf215..fce16a5190 100644 --- a/src/main/window-manager.ts +++ b/src/main/window-manager.ts @@ -55,7 +55,13 @@ export class WindowManager { // handle close event this.mainWindow.on("close", () => { this.mainWindow = null; - }) + }); + + // open external links in default browser (target=_blank, window.open) + this.mainWindow.webContents.on("new-window", (event, url) => { + event.preventDefault(); + shell.openExternal(url); + }); // handle external links this.mainWindow.webContents.on("will-navigate", (event, link) => { diff --git a/src/renderer/_vue/assets/css/app.scss b/src/renderer/_vue/assets/css/app.scss index e969e9dd45..93642f0b0a 100644 --- a/src/renderer/_vue/assets/css/app.scss +++ b/src/renderer/_vue/assets/css/app.scss @@ -203,4 +203,9 @@ h1, h2, h3, h4, h5, h6{ height: 100%; z-index: 100; display: none; + + > iframe { + height: 100%; + border: none; + } } diff --git a/src/renderer/_vue/components/ClusterPage.vue b/src/renderer/_vue/components/ClusterPage.vue index 5228202f85..da41355580 100644 --- a/src/renderer/_vue/components/ClusterPage.vue +++ b/src/renderer/_vue/components/ClusterPage.vue @@ -92,10 +92,6 @@ export default { lensLoaded: function() { console.log("lens loaded") this.lens.loaded = true; - remote.webContents.fromId(this.lens.webview.getWebContentsId()).on('new-window', (e, url) => { - e.preventDefault() - shell.openExternal(url) - }) this.$store.commit("updateLens", this.lens); }, // Called only when online state changes @@ -110,9 +106,9 @@ export default { activateLens: async function() { console.log("activate lens") if (!this.lens.webview) { - console.log("create webview") - const webview = document.createElement('webview'); - webview.addEventListener('did-finish-load', this.lensLoaded); + console.log("creating webview or iframe") + const webview = document.createElement('iframe'); + webview.addEventListener('load', this.lensLoaded); webview.src = this.cluster.url; this.lens.webview = webview; } diff --git a/src/renderer/_vue/store/modules/clusters.ts b/src/renderer/_vue/store/modules/clusters.ts index 10453295b2..7134768468 100644 --- a/src/renderer/_vue/store/modules/clusters.ts +++ b/src/renderer/_vue/store/modules/clusters.ts @@ -3,7 +3,7 @@ import { ClusterInfo } from "../../../../main/cluster" import { MutationTree, ActionTree, GetterTree } from "vuex" import { PromiseIpc } from 'electron-promise-ipc' import { Tracker } from "../../../../common/tracker" -import { remote } from "electron" +import { remote, WebviewTag } from "electron" import { clusterStore } from "../../../../common/cluster-store" import { Workspace } from "../../../../common/workspace-store" @@ -13,7 +13,7 @@ const tracker = new Tracker(remote.app); export interface LensWebview { id: string; loaded: boolean; - webview?: any; + webview?: WebviewTag | HTMLIFrameElement; } export interface ClusterState {