From 578fb8b6f81200395b738daf746f5025524c1040 Mon Sep 17 00:00:00 2001 From: Snuffleupagus Date: Wed, 6 Feb 2013 18:53:41 +0100 Subject: [PATCH] Add partial support for "search=" URL parameter - comment added --- .../firefox/components/PdfStreamConverter.js | 12 +++++++++ web/viewer.js | 26 +++++++++++++++++++ 2 files changed, 38 insertions(+) diff --git a/extensions/firefox/components/PdfStreamConverter.js b/extensions/firefox/components/PdfStreamConverter.js index b1df8756ac6c9..872a7b0595a92 100644 --- a/extensions/firefox/components/PdfStreamConverter.js +++ b/extensions/firefox/components/PdfStreamConverter.js @@ -444,6 +444,18 @@ ChromeActions.prototype = { } getChromeWindow(this.domWindow).gFindBar .updateControlState(result, findPrevious); + }, + searchWithIntegratedFindBar: function(phrase, highlightAll) { + if (!this.supportsIntegratedFind()) { + return; + } + var fBar = getChromeWindow(this.domWindow).gFindBar; + fBar._findField.value = phrase; + fBar._setCaseSensitivity(false); + if (phrase && highlightAll) { + fBar.getElement('highlight').click(); + } + fBar.onFindCommand(); } }; diff --git a/web/viewer.js b/web/viewer.js index 184528c4371ca..8b409dd973a0b 100644 --- a/web/viewer.js +++ b/web/viewer.js @@ -1492,6 +1492,32 @@ var PDFView = { this.page = pageNumber; // simple page } } + if ('search' in params) { + // pdf.js currently implements this as a phrase search, + // i.e. specifying the URL parameter as: #search="word1 word2" + // will perform a search for the whole string "word1 word2". + + var phrase = params.search.replace(/[\"]/g, ''); + if (!PDFView.supportsIntegratedFind) { + var fBar = PDFFindBar; + fBar.findField.value = phrase; + fBar.caseSensitive.checked = false; + if (phrase) { + fBar.highlightAll.checked = true; + fBar.dispatchEvent(''); + fBar.findField.blur(); + } else { + fBar.highlightAll.checked = false; + fBar.dispatchEvent('highlightallchange'); + } + fBar.open(); + fBar.findField.select(); + } else { + // searchWithIntegratedFindBar(phrase {String}, + // highlightAll {Boolean}) + FirefoxCom.request('searchWithIntegratedFindBar', phrase, true); + } + } } else if (/^\d+$/.test(hash)) // page number this.page = hash; else // named destination