Prompt web users when they try using ctrl+w/cmd+w when focused on a webview

Fixes #109521
This commit is contained in:
Matt Bierner 2020-12-09 19:33:43 -08:00
parent 04ec120e2c
commit d2965c18bf

View file

@ -105,6 +105,31 @@
}
}
/** @type {undefined | ((iframe: HTMLIFrameElement) => void)} */
let onIframeLoaded;
if (!onElectron) {
let isModifierDown = false;
onIframeLoaded = (frame) => {
frame.contentWindow.addEventListener('keydown', e => {
isModifierDown = e.metaKey || e.ctrlKey || e.altKey;
});
frame.contentWindow.addEventListener('keyup', () => {
isModifierDown = false;
});
};
window.addEventListener('beforeunload', (event) => {
if (isModifierDown) {
event.preventDefault();
event.returnValue = '';
return '';
}
});
}
/** @type {import('./main').WebviewHost} */
const host = {
postMessage: hostMessaging.postMessage.bind(hostMessaging),
@ -112,6 +137,7 @@
ready: workerReady,
fakeLoad: !onElectron,
onElectron: onElectron,
onIframeLoaded,
rewriteCSP: onElectron
? (csp) => {
return csp.replace(/vscode-resource:(?=(\s|;|$))/g, 'vscode-webview-resource:');