From 60b9380fe2565ea2471341b58aa33dcda6e53506 Mon Sep 17 00:00:00 2001 From: Q01 <8140841+zsm1703@users.noreply.github.com> Date: Mon, 28 Feb 2022 15:11:55 +0800 Subject: [PATCH] feat: prevent window close on sessions open (#227) --- web/src/components/access/Access.js | 8 ++++++++ web/src/components/access/Term.js | 8 ++++++++ 2 files changed, 16 insertions(+) diff --git a/web/src/components/access/Access.js b/web/src/components/access/Access.js index 08da867..e58d7b5 100644 --- a/web/src/components/access/Access.js +++ b/web/src/components/access/Access.js @@ -114,6 +114,7 @@ class Access extends Component { this.renderDisplay(sessionId, protocol, width, height); window.addEventListener('resize', this.onWindowResize); + window.addEventListener('beforeunload', this.handleUnload); window.onfocus = this.onWindowFocus; } @@ -121,6 +122,7 @@ class Access extends Component { if (this.state.client) { this.state.client.disconnect(); } + window.removeEventListener('beforeunload', this.handleUnload); } sendClipboard(data) { @@ -528,6 +530,12 @@ class Access extends Component { } }; + handleUnload(e) { + var message = "要离开网站吗?"; + (e || window.event).returnValue = message; //Gecko + IE + return message; + } + resize = async (sessionId, width, height) => { let result = await request.post(`/sessions/${sessionId}/resize?width=${width}&height=${height}`); if (result.code !== 1) { diff --git a/web/src/components/access/Term.js b/web/src/components/access/Term.js index 5bb4002..b0f351e 100644 --- a/web/src/components/access/Term.js +++ b/web/src/components/access/Term.js @@ -166,6 +166,7 @@ class Term extends Component { }); window.addEventListener('resize', this.onWindowResize); + window.addEventListener('beforeunload', this.handleUnload); window.onunload = function () { webSocket.close(); }; @@ -176,6 +177,7 @@ class Term extends Component { if (webSocket) { webSocket.close() } + window.removeEventListener('beforeunload', this.handleUnload); } getCommands = async () => { @@ -251,6 +253,12 @@ class Term extends Component { }); }; + handleUnload(e) { + var message = "要离开网站吗?"; + (e || window.event).returnValue = message; //Gecko + IE + return message; + } + writeCommand = (command) => { let webSocket = this.state.webSocket; if (webSocket !== undefined) {