From 12b27044aa05df0478b9eaf410da5b95c2d3bf16 Mon Sep 17 00:00:00 2001 From: Julian Viereck Date: Sun, 8 Apr 2012 16:31:29 -0700 Subject: [PATCH] Fix bug such that search is updated one a new page arrives + make the search update happen only very 250ms --- web/viewer.js | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) diff --git a/web/viewer.js b/web/viewer.js index c827b5bce..ec18ea55e 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -576,21 +576,34 @@ var PDFView = { if (pdfTitle) document.title = pdfTitle + ' - ' + document.title; + + pdf.textExtracted = (function pdfTextExtracted(pageIdx, content) { + this.search(); + }).bind(this); }, startTextExtraction: function pdfViewStartTextExtraction(pdf) { var searchResults = document.getElementById('searchResults'); searchResults.textContent = ''; - pdf.textExtracted = (function pdfTextExtracted(pageIdx, content) { - this.search(); - }).bind(this); - pdf.extractText(); - - this.pdfDoc = pdf; + this.pdfDoc.extractText(); }, search: function pdfViewStartSearch() { + // Limit this function to run every ms. + var SEARCH_TIMEOUT = 250; + var lastSeach = this.lastSearch; + var now = Date.now(); + if (lastSeach && (now - lastSeach) < SEARCH_TIMEOUT) { + if (!this.searchTimer) + this.searchTimer = + setTimeout(this.search, SEARCH_TIMEOUT - (now - lastSeach)); + + return; + } + this.searchTimer = null; + this.lastSearch = now; + function bindLink(link, pageNumber) { link.href = '#' + pageNumber; link.onclick = function searchBindLink() {