diff --git a/services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js b/services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js index 8ade85b673..5d84205f1c 100644 --- a/services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js +++ b/services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js @@ -82,13 +82,16 @@ function PdfJsViewer({ url }) { let storePositionTimer if (initialised && pdfJsWrapper) { + if (!pdfJsWrapper.isVisible()) { + return + } + // store the scroll position in localStorage, for the synctex button const storePosition = debounce(pdfViewer => { // set position for "sync to code" button try { setPosition(pdfViewer.currentPosition) } catch (error) { - // TODO: investigate handling missing offsetParent in jsdom // console.error(error) } }, 500) @@ -139,6 +142,10 @@ function PdfJsViewer({ url }) { // restore the saved scale and scroll position useEffect(() => { if (initialised && pdfJsWrapper) { + if (!pdfJsWrapper.isVisible()) { + return + } + setScale(scale => { setPosition(position => { if (position) { diff --git a/services/web/frontend/js/features/pdf-preview/util/pdf-js-wrapper.js b/services/web/frontend/js/features/pdf-preview/util/pdf-js-wrapper.js index 70dbaeac03..a387d424f7 100644 --- a/services/web/frontend/js/features/pdf-preview/util/pdf-js-wrapper.js +++ b/services/web/frontend/js/features/pdf-preview/util/pdf-js-wrapper.js @@ -183,6 +183,10 @@ export default class PDFJSWrapper { }) } + isVisible() { + return this.viewer.container.offsetParent !== null + } + abortDocumentLoading() { this.loadDocumentTask = undefined }