Update FileSaver

master
Daniel Berteaud 11 years ago
parent 87c6cdc62c
commit 28f01743d8
  1. 24
      public/js/FileSaver.js

@ -1,10 +1,10 @@
/*! FileSaver.js /* FileSaver.js
* A saveAs() FileSaver implementation. * A saveAs() FileSaver implementation.
* 2014-01-24 * 2014-05-27
* *
* By Eli Grey, http://eligrey.com * By Eli Grey, http://eligrey.com
* License: X11/MIT * License: X11/MIT
* See LICENSE.md * See https://github.com/eligrey/FileSaver.js/blob/master/LICENSE.md
*/ */
/*global self */ /*global self */
@ -26,11 +26,10 @@ var saveAs = saveAs
} }
var var
doc = view.document doc = view.document
// only get URL when necessary in case BlobBuilder.js hasn't overridden it yet // only get URL when necessary in case Blob.js hasn't overridden it yet
, get_URL = function() { , get_URL = function() {
return view.URL || view.webkitURL || view; return view.URL || view.webkitURL || view;
} }
, URL = view.URL || view.webkitURL || view
, save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a") , save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a")
, can_use_save_link = !view.externalHost && "download" in save_link , can_use_save_link = !view.externalHost && "download" in save_link
, click = function(node) { , click = function(node) {
@ -56,7 +55,7 @@ var saveAs = saveAs
while (i--) { while (i--) {
var file = deletion_queue[i]; var file = deletion_queue[i];
if (typeof file === "string") { // file is an object URL if (typeof file === "string") { // file is an object URL
URL.revokeObjectURL(file); get_URL().revokeObjectURL(file);
} else { // file is a File } else { // file is a File
file.remove(); file.remove();
} }
@ -123,20 +122,9 @@ var saveAs = saveAs
} }
if (can_use_save_link) { if (can_use_save_link) {
object_url = get_object_url(blob); object_url = get_object_url(blob);
// FF for Android has a nasty garbage collection mechanism
// that turns all objects that are not pure javascript into 'deadObject'
// this means `doc` and `save_link` are unusable and need to be recreated
// `view` is usable though:
doc = view.document;
save_link = doc.createElementNS("http://www.w3.org/1999/xhtml", "a");
save_link.href = object_url; save_link.href = object_url;
save_link.download = name; save_link.download = name;
var event = doc.createEvent("MouseEvents"); click(save_link);
event.initMouseEvent(
"click", true, false, view, 0, 0, 0, 0, 0
, false, false, false, false, 0, null
);
save_link.dispatchEvent(event);
filesaver.readyState = filesaver.DONE; filesaver.readyState = filesaver.DONE;
dispatch_all(); dispatch_all();
return; return;

Loading…
Cancel
Save