From e15c5d17fd243a0487abcb518ece02ebc972fc20 Mon Sep 17 00:00:00 2001 From: Vincent Vanwaelscappel Date: Thu, 26 Jun 2025 18:08:51 +0200 Subject: [PATCH] wait #7551 @0:20 --- js/libs/fluidbook/fluidbook.keyboard.js | 58 ++++++++++++++++++------- 1 file changed, 42 insertions(+), 16 deletions(-) diff --git a/js/libs/fluidbook/fluidbook.keyboard.js b/js/libs/fluidbook/fluidbook.keyboard.js index 951ac374..58c69085 100644 --- a/js/libs/fluidbook/fluidbook.keyboard.js +++ b/js/libs/fluidbook/fluidbook.keyboard.js @@ -12,21 +12,7 @@ FluidbookKeyboard.prototype = { return !(e.is('input:not(#q),select,textarea')); } this.keyShortcut('escape', function () { - if ($this.fluidbook.help.isVisible()) { - $this.fluidbook.help.hide(); - } - if ($this.fluidbook.menu.viewMode()) { - $this.fluidbook.menu.closeView(function () { - - }, true, true); - } - $this.fluidbook.search.closeSearch(); - $this.fluidbook.search.closeResultsNav(); - $this.fluidbook.nav.burger.close(); - - if ($this.fluidbook.support.isFullscreen()) { - document.exitFullscreen(); - } + $this.escape(); }); this.keyShortcut('tab,shift+tab', function (e, handler) { let dir = handler.shortcut === 'tab' ? 1 : -1; @@ -56,7 +42,47 @@ FluidbookKeyboard.prototype = { this.keyShortcut('f10', function () { $this.fluidbook.nav.burger.toggle(); - }) + }); + + setInterval(function () { + $this.listenToIframeEscapeEvents(); + }, 500); + }, + + listenToIframeEscapeEvents: function () { + var $this = this; + $('iframe:not(.listenescape)').each(function () { + $(this).addClass('listenescape'); + let iframe = $(this); + $(this).on('load', function () { + let win = $(iframe).get(0).contentWindow; + let doc = win.document; + doc.addEventListener('keydown', function (e) { + if (e.code === 'Escape') { + $this.escape(); + } + }); + }); + + }); + }, + + escape: function () { + if (this.fluidbook.help.isVisible()) { + this.fluidbook.help.hide(); + } + if (this.fluidbook.menu.viewMode()) { + this.fluidbook.menu.closeView(function () { + + }, true, true); + } + this.fluidbook.search.closeSearch(); + this.fluidbook.search.closeResultsNav(); + this.fluidbook.nav.burger.close(); + + if (this.fluidbook.support.isFullscreen()) { + document.exitFullscreen(); + } }, _navigate: function (list, dir, actions) { -- 2.39.5