From 20881dc99abd520274766e9161d772c6277d8b17 Mon Sep 17 00:00:00 2001 From: Jonas Jenwald Date: Fri, 29 May 2015 13:37:28 +0200 Subject: [PATCH] Make PDFHistory optional in PDFLinkService Currently `PDFLinkService` requires access to a `PDFHistory` instance in order for it to work correctly (and to avoid errors). If we want `PDFLinkService` to be more useful in custom viewers, I don't think that we actually want to force it to have a `PDFHistory` instance. Hence this patch, which contains a very simply approach to make `PDFHistory` optional. --- web/pdf_link_service.js | 30 ++++++++++++++++++++---------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/web/pdf_link_service.js b/web/pdf_link_service.js index 4e3213a17..54244e1ff 100644 --- a/web/pdf_link_service.js +++ b/web/pdf_link_service.js @@ -89,12 +89,14 @@ var PDFLinkService = (function () { } self.pdfViewer.scrollPageIntoView(pageNumber, dest); - // Update the browsing history. - self.pdfHistory.push({ - dest: dest, - hash: destString, - page: pageNumber - }); + if (self.pdfHistory) { + // Update the browsing history. + self.pdfHistory.push({ + dest: dest, + hash: destString, + page: pageNumber + }); + } } else { self.pdfDocument.getPageIndex(destRef).then(function (pageIndex) { var pageNum = pageIndex + 1; @@ -173,7 +175,9 @@ var PDFLinkService = (function () { var params = parseQueryString(hash); // borrowing syntax from "Parameters for Opening PDF Files" if ('nameddest' in params) { - this.pdfHistory.updateNextHashParam(params.nameddest); + if (this.pdfHistory) { + this.pdfHistory.updateNextHashParam(params.nameddest); + } this.navigateTo(params.nameddest); return; } @@ -233,7 +237,9 @@ var PDFLinkService = (function () { } else if (/^\d+$/.test(hash)) { // page number this.page = hash; } else { // named destination - this.pdfHistory.updateNextHashParam(unescape(hash)); + if (this.pdfHistory) { + this.pdfHistory.updateNextHashParam(unescape(hash)); + } this.navigateTo(unescape(hash)); } }, @@ -245,11 +251,15 @@ var PDFLinkService = (function () { // See PDF reference, table 8.45 - Named action switch (action) { case 'GoBack': - this.pdfHistory.back(); + if (this.pdfHistory) { + this.pdfHistory.back(); + } break; case 'GoForward': - this.pdfHistory.forward(); + if (this.pdfHistory) { + this.pdfHistory.forward(); + } break; case 'NextPage':