From 610df45bad214e3edab140978a3988dab4d28d81 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Sun, 19 Apr 2015 12:40:46 +0200 Subject: [PATCH] Prevent external links from "replacing" the viewer when it's embedded (bug 976541) Fixes https://bugzilla.mozilla.org/show_bug.cgi?id=976541. This patch also adds a `externalLinkTarget` preference, to make the behaviour user configurable. --- web/default_preferences.js | 3 ++- web/viewer.js | 16 ++++++++++++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/web/default_preferences.js b/web/default_preferences.js index 10474144a7dec..ea2d4ae2246e4 100644 --- a/web/default_preferences.js +++ b/web/default_preferences.js @@ -32,5 +32,6 @@ var DEFAULT_PREFERENCES = { disableAutoFetch: false, disableFontFace: false, disableTextLayer: false, - useOnlyCssZoom: false + useOnlyCssZoom: false, + externalLinkTarget: 0, }; diff --git a/web/viewer.js b/web/viewer.js index 514e0c3949108..4b25ffe3cc6a0 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -288,12 +288,24 @@ var PDFViewerApplication = { }), Preferences.get('useOnlyCssZoom').then(function resolved(value) { PDFJS.useOnlyCssZoom = value; - }) + }), + Preferences.get('externalLinkTarget').then(function resolved(value) { + if (PDFJS.isExternalLinkTargetSet()) { + return; + } + PDFJS.externalLinkTarget = value; + }), // TODO move more preferences and other async stuff here ]).catch(function (reason) { }); return initializedPromise.then(function () { - PDFViewerApplication.initialized = true; + if (self.isViewerEmbedded && !PDFJS.isExternalLinkTargetSet()) { + // Prevent external links from "replacing" the viewer, + // when it's embedded in e.g. an iframe or an object. + PDFJS.externalLinkTarget = PDFJS.LinkTarget.TOP; + } + + self.initialized = true; }); },