Browse Source

Merge pull request #3341 from Snuffleupagus/navigateTo-fix

Tweak the behaviour of navigateTo during document load
Brendan Dahl 12 years ago
parent
commit
330f6212ba
  1. 36
      web/viewer.js

36
web/viewer.js

@ -941,19 +941,12 @@ var PDFView = {
}, },
navigateTo: function pdfViewNavigateTo(dest) { navigateTo: function pdfViewNavigateTo(dest) {
var self = this;
PDFJS.Promise.all([this.pagesPromise,
this.destinationsPromise]).then(function() {
var destString = ''; var destString = '';
if (typeof dest === 'string') { var self = this;
destString = dest;
dest = self.destinations[dest]; var goToDestination = function(destRef) {
} self.pendingRefStr = null;
if (!(dest instanceof Array)) {
return; // invalid destination
}
// dest array looks like that: <page-ref> </XYZ|FitXXX> <args..> // dest array looks like that: <page-ref> </XYZ|FitXXX> <args..>
var destRef = dest[0];
var pageNumber = destRef instanceof Object ? var pageNumber = destRef instanceof Object ?
self.pagesRefMap[destRef.num + ' ' + destRef.gen + ' R'] : self.pagesRefMap[destRef.num + ' ' + destRef.gen + ' R'] :
(destRef + 1); (destRef + 1);
@ -966,7 +959,24 @@ var PDFView = {
// Update the browsing history. // Update the browsing history.
PDFHistory.push({ dest: dest, hash: destString, page: pageNumber }); PDFHistory.push({ dest: dest, hash: destString, page: pageNumber });
} else {
self.pendingRefStrLoaded = new PDFJS.Promise();
self.pendingRefStr = destRef.num + ' ' + destRef.gen + ' R';
self.pendingRefStrLoaded.then(function() {
goToDestination(destRef);
});
} }
};
this.destinationsPromise.then(function() {
if (typeof dest === 'string') {
destString = dest;
dest = self.destinations[dest];
}
if (!(dest instanceof Array)) {
return; // invalid destination
}
goToDestination(dest[0]);
}); });
}, },
@ -1188,6 +1198,10 @@ var PDFView = {
var pageRef = pdfPage.ref; var pageRef = pdfPage.ref;
var refStr = pageRef.num + ' ' + pageRef.gen + ' R'; var refStr = pageRef.num + ' ' + pageRef.gen + ' R';
pagesRefMap[refStr] = pdfPage.pageNumber; pagesRefMap[refStr] = pdfPage.pageNumber;
if (self.pendingRefStr && self.pendingRefStr === refStr) {
self.pendingRefStrLoaded.resolve();
}
}); });
pagePromises.push(pagePromise); pagePromises.push(pagePromise);
} }

Loading…
Cancel
Save