Просмотр исходного кода

Merge pull request #9085 from overleaf/ii-pdf-click-position-fix

[web] PDF preview click position error fix

GitOrigin-RevId: f2ac73f2a4050b707402c373193ae7a0ecd8ac53
ilkin-overleaf 4 лет назад
Родитель
Сommit
bec4827c3f

+ 12 - 4
services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js

@@ -193,11 +193,19 @@ function PdfJsViewer({ url, pdfFile }) {
         const pageElement = textLayer.source.textLayerDiv.closest('.page')
 
         const doubleClickListener = event => {
-          window.dispatchEvent(
-            new CustomEvent('synctex:sync-to-position', {
-              detail: pdfJsWrapper.clickPosition(event, pageElement, textLayer),
-            })
+          const clickPosition = pdfJsWrapper.clickPosition(
+            event,
+            pageElement,
+            textLayer
           )
+
+          if (clickPosition) {
+            window.dispatchEvent(
+              new CustomEvent('synctex:sync-to-position', {
+                detail: clickPosition,
+              })
+            )
+          }
         }
 
         pageElement.addEventListener('dblclick', doubleClickListener)

+ 7 - 1
services/web/frontend/js/features/pdf-preview/util/pdf-js-wrapper.js

@@ -152,7 +152,13 @@ export default class PDFJSWrapper {
   clickPosition(event, pageElement, textLayer) {
     const { viewport } = this.viewer.getPageView(textLayer.pageNumber - 1)
 
-    const pageRect = pageElement.querySelector('canvas').getBoundingClientRect()
+    const pageCanvas = pageElement.querySelector('canvas')
+
+    if (!pageCanvas) {
+      return
+    }
+
+    const pageRect = pageCanvas.getBoundingClientRect()
 
     const dx = event.clientX - pageRect.left
     const dy = event.clientY - pageRect.top