Browse Source

Make the 'download' button behavior more robust

Vivien Nicolas 14 years ago
parent
commit
f3dc4206ee
  1. 10
      extensions/firefox/components/pdfContentHandler.js
  2. 10
      web/viewer.js

10
extensions/firefox/components/pdfContentHandler.js

@ -48,16 +48,12 @@ pdfContentHandler.prototype = {
throw NS_ERROR_WONT_HANDLE_CONTENT; throw NS_ERROR_WONT_HANDLE_CONTENT;
} }
// To allow a Download feature we need to ensure pdf.js let targetUrl = aRequest.URI.spec;
// is not opened again if the request for opening an if (targetUrl.indexOf('?pdfjs.action=download') >= 0)
// application/pdf document has been done by itself.
let location = window.location.toString();
if (location.indexOf(url.replace('%s', '')) == 0)
throw NS_ERROR_WONT_HANDLE_CONTENT; throw NS_ERROR_WONT_HANDLE_CONTENT;
aRequest.cancel(Cr.NS_BINDING_ABORTED); aRequest.cancel(Cr.NS_BINDING_ABORTED);
let uri = aRequest.URI; window.location = url.replace('%s', targetUrl);
window.location = url.replace('%s', uri.spec);
}, },
classID: Components.ID('{2278dfd0-b75c-11e0-8257-1ba3d93c9f1a}'), classID: Components.ID('{2278dfd0-b75c-11e0-8257-1ba3d93c9f1a}'),

10
web/viewer.js

@ -85,10 +85,6 @@ var PDFView = {
this.setScale(newScale, true); this.setScale(newScale, true);
}, },
download: function pdfViewDownload() {
window.open(document.title, '_parent', 'pdf=yes');
},
set page(val) { set page(val) {
var pages = this.pages; var pages = this.pages;
var input = document.getElementById('pageNumber'); var input = document.getElementById('pageNumber');
@ -119,7 +115,7 @@ var PDFView = {
}, },
open: function pdfViewOpen(url, scale) { open: function pdfViewOpen(url, scale) {
document.title = url; document.title = this.url = url;
getPdf( getPdf(
{ {
@ -135,6 +131,10 @@ var PDFView = {
}); });
}, },
download: function pdfViewDownload() {
window.open(this.url + '?pdfjs.action=download', '_parent');
},
navigateTo: function pdfViewNavigateTo(dest) { navigateTo: function pdfViewNavigateTo(dest) {
if (typeof dest === 'string') if (typeof dest === 'string')
dest = this.destinations[dest]; dest = this.destinations[dest];

Loading…
Cancel
Save