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

Merge pull request #10323 from overleaf/ae-pdf-dblclick-page

Ensure only one dblclick listener is attached to a PDF page

GitOrigin-RevId: cadaa2f3bbaba8c496a6ece698b2ba7f12f340c4
Miguel Serrano 3 лет назад
Родитель
Сommit
4a3fb3344b

+ 18 - 14
services/web/frontend/js/features/pdf-preview/components/pdf-js-viewer.js

@@ -192,23 +192,27 @@ function PdfJsViewer({ url, pdfFile }) {
       const handleTextlayerrendered = textLayer => {
         const pageElement = textLayer.source.textLayerDiv.closest('.page')
 
-        const doubleClickListener = event => {
-          const clickPosition = pdfJsWrapper.clickPosition(
-            event,
-            pageElement,
-            textLayer
-          )
-
-          if (clickPosition) {
-            window.dispatchEvent(
-              new CustomEvent('synctex:sync-to-position', {
-                detail: clickPosition,
-              })
+        if (!pageElement.dataset.listeningForDoubleClick) {
+          pageElement.dataset.listeningForDoubleClick = true
+
+          const doubleClickListener = event => {
+            const clickPosition = pdfJsWrapper.clickPosition(
+              event,
+              pageElement,
+              textLayer
             )
+
+            if (clickPosition) {
+              window.dispatchEvent(
+                new CustomEvent('synctex:sync-to-position', {
+                  detail: clickPosition,
+                })
+              )
+            }
           }
-        }
 
-        pageElement.addEventListener('dblclick', doubleClickListener)
+          pageElement.addEventListener('dblclick', doubleClickListener)
+        }
       }
 
       pdfJsWrapper.eventBus.on('textlayerrendered', handleTextlayerrendered)