From 16d82e094f6bd64cb7d80c1defc5437b5f4fb51c Mon Sep 17 00:00:00 2001 From: Roland Arnold Date: Sun, 3 May 2026 18:30:40 +0100 Subject: [PATCH] fix: inline styles for hidden helper elements Set layout-neutral styles at the creation sites for the hidden TextLayer canvas and PDFViewer copy element rather than relying on the shared web/pdf_viewer.css rule. This keeps the helper elements invisible and out of layout when viewer CSS selectors are scoped or omitted, and removes the obsolete hiddenCanvasElement class and shared CSS rule. --- src/display/text_layer.js | 3 ++- web/pdf_viewer.css | 10 ---------- web/pdf_viewer.js | 2 ++ 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/display/text_layer.js b/src/display/text_layer.js index c97e6a1d9..bfe0c0cb7 100644 --- a/src/display/text_layer.js +++ b/src/display/text_layer.js @@ -472,7 +472,8 @@ class TextLayer { // their replacements when they aren't embedded) and then we can use an // OffscreenCanvas. const canvas = document.createElement("canvas"); - canvas.className = "hiddenCanvasElement"; + canvas.style.cssText = + "position:absolute;top:0;left:0;width:0;height:0;display:none"; canvas.lang = lang; document.body.append(canvas); ctx = canvas.getContext("2d", { diff --git a/web/pdf_viewer.css b/web/pdf_viewer.css index 48e0b857e..b32fb4743 100644 --- a/web/pdf_viewer.css +++ b/web/pdf_viewer.css @@ -78,16 +78,6 @@ transform: rotate(270deg) translateX(-100%); } -#hiddenCopyElement, -.hiddenCanvasElement { - position: absolute; - top: 0; - left: 0; - width: 0; - height: 0; - display: none; -} - .pdfViewer { /* Define this variable here and not in :root to avoid to reflow all the UI when scaling (see #15929). */ diff --git a/web/pdf_viewer.js b/web/pdf_viewer.js index b4e5aba26..17295ed8c 100644 --- a/web/pdf_viewer.js +++ b/web/pdf_viewer.js @@ -967,6 +967,8 @@ class PDFViewer { const element = (this.#hiddenCopyElement = document.createElement("div")); element.id = "hiddenCopyElement"; + element.style.cssText = + "position:absolute;top:0;left:0;width:0;height:0;display:none"; viewer.before(element); }