Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nextcloud/files_pdfviewer.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Calviño Sánchez <danxuliu@gmail.com>2020-03-18 02:49:33 +0300
committerbackportbot[bot] <backportbot[bot]@users.noreply.github.com>2020-03-18 17:08:26 +0300
commit8b9f0cfbd1c35400e9f9e3c87f9a6c6c033a229f (patch)
treeecc7b3714f1ce5b29d3f0557bbedce9d7453391c
parent4631fddec3133df8efa5906ff05370caf80429cc (diff)
Update custom PDFViewerApplication initialization to PDF.js 2.1.266
Since v2.1.266 an event is triggered before the PDFViewerApplication is initialized, so the hack that relied on the asynchronous calls during the initialization to hook in is no longer needed. However, as the event is triggered before the initialization the options are now set before the preferences are read. As the preferences override the options the preferences need to be disabled to be able to set "externalLinkTarget". Disabling the preferences has no effect for the rest of them, as they already have the same value as the default options. Signed-off-by: Daniel Calviño Sánchez <danxuliu@gmail.com>
-rw-r--r--js/workersrc.js26
1 files changed, 8 insertions, 18 deletions
diff --git a/js/workersrc.js b/js/workersrc.js
index a8cd485..1c9b4f0 100644
--- a/js/workersrc.js
+++ b/js/workersrc.js
@@ -15,20 +15,14 @@ redirectIfNotDisplayedInFrame();
// When "PDFViewerApplication.webViewerInitialized" is executed (once
// "PDFViewerApplication.initialize" is done) it opens the PDF file via URL,
// which requires the PDFViewerApplication to be properly configured, so the
-// custom initialization has to be executed before that. As
-// "PDFViewerApplication" does not provide any hookable point for custom
-// initialization in its initialization routine a dirty hack has to be used.
-//
-// When "vendor/pdfjs/web/viewer.js" is parsed it calls
-// "PDFViewerApplication.initialize" (either directly or as a "DOMContentLoaded"
-// event handler), and "PDFViewerApplication.initialize" does some asynchronous
-// calls, which causes the execution flow to continue with the next script or
-// the next "DOMContentLoaded" handler. Thanks to this
-// "initializeCustomPDFViewerApplication" can be executed at that point
-// by parsing "js/workersrc.js" after "vendor/pdfjs/web/viewer.js" and either
-// calling it directly or adding it as a "DOMContentLoaded" event handler (using
-// the same conditions as in "vendor/pdfjs/web/viewer.js").
+// custom initialization has to be executed before that. This can be done by
+// listening to the "webviewerloaded" event, which is emitted after
+// "PDFViewerApplication" and "PDFViewerApplicationOptions" are globally set and
+// before "PDFViewerApplication.initialize" is executed.
function initializeCustomPDFViewerApplication() {
+ // Preferences override options, so they must be disabled for
+ // "externalLinkTarget" to take effect.
+ PDFViewerApplicationOptions.set('disablePreferences', true);
PDFViewerApplicationOptions.set('externalLinkTarget', pdfjsLib.LinkTarget.BLANK);
PDFViewerApplicationOptions.set('isEvalSupported', false);
PDFViewerApplicationOptions.set('workerSrc', document.getElementsByTagName('head')[0].getAttribute('data-workersrc'));
@@ -78,8 +72,4 @@ function initializeCustomPDFViewerApplication() {
};
}
-if (document.readyState === 'interactive' || document.readyState === 'complete') {
- initializeCustomPDFViewerApplication();
-} else {
- document.addEventListener('DOMContentLoaded', initializeCustomPDFViewerApplication, true);
-}
+document.addEventListener('webviewerloaded', initializeCustomPDFViewerApplication, true);