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.
This commit is contained in:
Jonas Jenwald 2015-05-29 13:37:28 +02:00
parent 189ef974b1
commit 20881dc99a

View File

@ -89,12 +89,14 @@ var PDFLinkService = (function () {
} }
self.pdfViewer.scrollPageIntoView(pageNumber, dest); self.pdfViewer.scrollPageIntoView(pageNumber, dest);
// Update the browsing history. if (self.pdfHistory) {
self.pdfHistory.push({ // Update the browsing history.
dest: dest, self.pdfHistory.push({
hash: destString, dest: dest,
page: pageNumber hash: destString,
}); page: pageNumber
});
}
} else { } else {
self.pdfDocument.getPageIndex(destRef).then(function (pageIndex) { self.pdfDocument.getPageIndex(destRef).then(function (pageIndex) {
var pageNum = pageIndex + 1; var pageNum = pageIndex + 1;
@ -173,7 +175,9 @@ var PDFLinkService = (function () {
var params = parseQueryString(hash); var params = parseQueryString(hash);
// borrowing syntax from "Parameters for Opening PDF Files" // borrowing syntax from "Parameters for Opening PDF Files"
if ('nameddest' in params) { if ('nameddest' in params) {
this.pdfHistory.updateNextHashParam(params.nameddest); if (this.pdfHistory) {
this.pdfHistory.updateNextHashParam(params.nameddest);
}
this.navigateTo(params.nameddest); this.navigateTo(params.nameddest);
return; return;
} }
@ -233,7 +237,9 @@ var PDFLinkService = (function () {
} else if (/^\d+$/.test(hash)) { // page number } else if (/^\d+$/.test(hash)) { // page number
this.page = hash; this.page = hash;
} else { // named destination } else { // named destination
this.pdfHistory.updateNextHashParam(unescape(hash)); if (this.pdfHistory) {
this.pdfHistory.updateNextHashParam(unescape(hash));
}
this.navigateTo(unescape(hash)); this.navigateTo(unescape(hash));
} }
}, },
@ -245,11 +251,15 @@ var PDFLinkService = (function () {
// See PDF reference, table 8.45 - Named action // See PDF reference, table 8.45 - Named action
switch (action) { switch (action) {
case 'GoBack': case 'GoBack':
this.pdfHistory.back(); if (this.pdfHistory) {
this.pdfHistory.back();
}
break; break;
case 'GoForward': case 'GoForward':
this.pdfHistory.forward(); if (this.pdfHistory) {
this.pdfHistory.forward();
}
break; break;
case 'NextPage': case 'NextPage':