From c8f6b38df2e125f5cd0b65f4e0340a948bec178c Mon Sep 17 00:00:00 2001 From: Christopher Willis-Ford Date: Fri, 14 Dec 2018 14:27:10 -0800 Subject: [PATCH] Add last-resort hook to stop link navigation Links which cause the browser to navigate to another page should be removed or disabled in Scratch Desktop to prevent Electron from navigating away from the editor. If we miss disabling or removing such a link, this last-resort hook will disable navigation after the user clicks a link. --- src/renderer/index.js | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/renderer/index.js b/src/renderer/index.js index 15e5507..d2f8d5e 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -8,6 +8,22 @@ import styles from './app.css'; const defaultProjectId = 0; +const captureClick = function (ev) { + for (const element of ev.path) { + if (element.href) { + // prevent clicking links + // this is a last-resort test: if we get here that means there's work to do in the GUI + console.warn(`Suppressing click on link to ${element.href}`); + ev.preventDefault(); + ev.stopPropagation(); + return false; + } + } +}; +document.addEventListener('DOMContentLoaded', () => { + document.addEventListener('click', captureClick, true); +}); + // Register "base" page view // analytics.pageview('/');