Log an error when the value passed to set currentPageNumber
is out of bounds (PR 7502 followup)
With PR 7502 we no longer dispatch an event when the `val` is out of bounds, so to better communicate why nothing happens this patch logs an error in that case (similar to the logging of errors when trying to set an invalid scale). The way that the default viewer is currently implemented, means that e.g. keyboard short-cuts could trigger the new error. Hence this patch also adds the necessary validation code, both to `app.js` and `pdf_link_service.js` to prevent unnecessary errors.
This commit is contained in:
parent
ac7b675603
commit
7706cfa9fe
59
web/app.js
59
web/app.js
@ -396,15 +396,15 @@ var PDFViewerApplication = {
|
||||
},
|
||||
|
||||
get pagesCount() {
|
||||
return this.pdfDocument.numPages;
|
||||
return this.pdfDocument ? this.pdfDocument.numPages : 0;
|
||||
},
|
||||
|
||||
set page(val) {
|
||||
this.pdfLinkService.page = val;
|
||||
this.pdfViewer.currentPageNumber = val;
|
||||
},
|
||||
|
||||
get page() { // TODO remove
|
||||
return this.pdfLinkService.page;
|
||||
get page() {
|
||||
return this.pdfViewer.currentPageNumber;
|
||||
},
|
||||
|
||||
get supportsPrinting() {
|
||||
@ -1496,30 +1496,25 @@ function webViewerInitialized() {
|
||||
}
|
||||
}, true);
|
||||
|
||||
appConfig.sidebar.toggleButton.addEventListener('click',
|
||||
function() {
|
||||
PDFViewerApplication.pdfSidebar.toggle();
|
||||
});
|
||||
appConfig.sidebar.toggleButton.addEventListener('click', function() {
|
||||
PDFViewerApplication.pdfSidebar.toggle();
|
||||
});
|
||||
|
||||
appConfig.toolbar.previous.addEventListener('click',
|
||||
function() {
|
||||
PDFViewerApplication.page--;
|
||||
});
|
||||
appConfig.toolbar.previous.addEventListener('click', function() {
|
||||
PDFViewerApplication.page--;
|
||||
});
|
||||
|
||||
appConfig.toolbar.next.addEventListener('click',
|
||||
function() {
|
||||
PDFViewerApplication.page++;
|
||||
});
|
||||
appConfig.toolbar.next.addEventListener('click', function() {
|
||||
PDFViewerApplication.page++;
|
||||
});
|
||||
|
||||
appConfig.toolbar.zoomIn.addEventListener('click',
|
||||
function() {
|
||||
PDFViewerApplication.zoomIn();
|
||||
});
|
||||
appConfig.toolbar.zoomIn.addEventListener('click', function() {
|
||||
PDFViewerApplication.zoomIn();
|
||||
});
|
||||
|
||||
appConfig.toolbar.zoomOut.addEventListener('click',
|
||||
function() {
|
||||
PDFViewerApplication.zoomOut();
|
||||
});
|
||||
appConfig.toolbar.zoomOut.addEventListener('click', function() {
|
||||
PDFViewerApplication.zoomOut();
|
||||
});
|
||||
|
||||
appConfig.toolbar.pageNumber.addEventListener('click', function() {
|
||||
this.select();
|
||||
@ -2187,7 +2182,9 @@ window.addEventListener('keydown', function keydown(evt) {
|
||||
/* falls through */
|
||||
case 75: // 'k'
|
||||
case 80: // 'p'
|
||||
PDFViewerApplication.page--;
|
||||
if (PDFViewerApplication.page > 1) {
|
||||
PDFViewerApplication.page--;
|
||||
}
|
||||
handled = true;
|
||||
break;
|
||||
case 27: // esc key
|
||||
@ -2217,7 +2214,9 @@ window.addEventListener('keydown', function keydown(evt) {
|
||||
/* falls through */
|
||||
case 74: // 'j'
|
||||
case 78: // 'n'
|
||||
PDFViewerApplication.page++;
|
||||
if (PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
|
||||
PDFViewerApplication.page++;
|
||||
}
|
||||
handled = true;
|
||||
break;
|
||||
|
||||
@ -2229,8 +2228,8 @@ window.addEventListener('keydown', function keydown(evt) {
|
||||
}
|
||||
break;
|
||||
case 35: // end
|
||||
if (isViewerInPresentationMode || (PDFViewerApplication.pdfDocument &&
|
||||
PDFViewerApplication.page < PDFViewerApplication.pagesCount)) {
|
||||
if (isViewerInPresentationMode ||
|
||||
PDFViewerApplication.page < PDFViewerApplication.pagesCount) {
|
||||
PDFViewerApplication.page = PDFViewerApplication.pagesCount;
|
||||
handled = true;
|
||||
ensureViewerFocused = true;
|
||||
@ -2255,7 +2254,9 @@ window.addEventListener('keydown', function keydown(evt) {
|
||||
pdfViewer.currentScaleValue !== 'page-fit') {
|
||||
break;
|
||||
}
|
||||
PDFViewerApplication.page--;
|
||||
if (PDFViewerApplication.page > 1) {
|
||||
PDFViewerApplication.page--;
|
||||
}
|
||||
handled = true;
|
||||
break;
|
||||
|
||||
|
@ -80,7 +80,7 @@ var PDFLinkService = (function PDFLinkServiceClosure() {
|
||||
* @returns {number}
|
||||
*/
|
||||
get pagesCount() {
|
||||
return this.pdfDocument.numPages;
|
||||
return this.pdfDocument ? this.pdfDocument.numPages : 0;
|
||||
},
|
||||
|
||||
/**
|
||||
@ -111,7 +111,9 @@ var PDFLinkService = (function PDFLinkServiceClosure() {
|
||||
(destRef + 1);
|
||||
if (pageNumber) {
|
||||
if (pageNumber > self.pagesCount) {
|
||||
pageNumber = self.pagesCount;
|
||||
console.error('PDFLinkService_navigateTo: ' +
|
||||
'Trying to navigate to a non-existent page.');
|
||||
return;
|
||||
}
|
||||
self.pdfViewer.scrollPageIntoView(pageNumber, dest);
|
||||
|
||||
@ -288,11 +290,15 @@ var PDFLinkService = (function PDFLinkServiceClosure() {
|
||||
break;
|
||||
|
||||
case 'NextPage':
|
||||
this.page++;
|
||||
if (this.page < this.pagesCount) {
|
||||
this.page++;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'PrevPage':
|
||||
this.page--;
|
||||
if (this.page > 1) {
|
||||
this.page--;
|
||||
}
|
||||
break;
|
||||
|
||||
case 'LastPage':
|
||||
|
@ -181,7 +181,7 @@ var PDFViewer = (function pdfViewer() {
|
||||
* @private
|
||||
*/
|
||||
_setCurrentPageNumber:
|
||||
function pdfViewer_setCurrentPageNumber(val, resetCurrentPageView) {
|
||||
function PDFViewer_setCurrentPageNumber(val, resetCurrentPageView) {
|
||||
if (this._currentPageNumber === val) {
|
||||
if (resetCurrentPageView) {
|
||||
this._resetCurrentPageView();
|
||||
@ -190,6 +190,8 @@ var PDFViewer = (function pdfViewer() {
|
||||
}
|
||||
|
||||
if (!(0 < val && val <= this.pagesCount)) {
|
||||
console.error('PDFViewer_setCurrentPageNumber: "' + val +
|
||||
'" is out of bounds.');
|
||||
return;
|
||||
}
|
||||
|
||||
@ -467,7 +469,7 @@ var PDFViewer = (function pdfViewer() {
|
||||
}
|
||||
},
|
||||
|
||||
_setScale: function pdfViewer_setScale(value, noScroll) {
|
||||
_setScale: function PDFViewer_setScale(value, noScroll) {
|
||||
var scale = parseFloat(value);
|
||||
|
||||
if (scale > 0) {
|
||||
@ -507,8 +509,8 @@ var PDFViewer = (function pdfViewer() {
|
||||
scale = Math.min(MAX_AUTO_SCALE, horizontalScale);
|
||||
break;
|
||||
default:
|
||||
console.error('pdfViewSetScale: \'' + value +
|
||||
'\' is an unknown zoom value.');
|
||||
console.error('PDFViewer_setScale: "' + value +
|
||||
'" is an unknown zoom value.');
|
||||
return;
|
||||
}
|
||||
this._setScaleUpdatePages(scale, value, noScroll, true);
|
||||
|
Loading…
x
Reference in New Issue
Block a user