Skip to content

Commit b7cf622

Browse files
committed
Merge branch 'eligrey-master'
2 parents 382f170 + 06b2d85 commit b7cf622

4 files changed

Lines changed: 26 additions & 16 deletions

File tree

FileSaver.js

Lines changed: 19 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
/* FileSaver.js
22
* A saveAs() FileSaver implementation.
3-
* 2015-03-04
3+
* 2015-05-07.2
44
*
55
* By Eli Grey, http://eligrey.com
66
* License: X11/MIT
@@ -12,16 +12,10 @@
1212

1313
/*! @source http://purl.eligrey.com/github/FileSaver.js/blob/master/FileSaver.js */
1414

15-
var saveAs = saveAs
16-
// IE 10+ (native saveAs)
17-
|| (typeof navigator !== "undefined" &&
18-
navigator.msSaveOrOpenBlob && navigator.msSaveOrOpenBlob.bind(navigator))
19-
// Everyone else
20-
|| (function(view) {
15+
var saveAs = saveAs || (function(view) {
2116
"use strict";
2217
// IE <10 is explicitly unsupported
23-
if (typeof navigator !== "undefined" &&
24-
/MSIE [1-9]\./.test(navigator.userAgent)) {
18+
if (typeof navigator !== "undefined" && /MSIE [1-9]\./.test(navigator.userAgent)) {
2519
return;
2620
}
2721
var
@@ -81,7 +75,15 @@ var saveAs = saveAs
8175
}
8276
}
8377
}
78+
, auto_bom = function(blob) {
79+
// prepend BOM for UTF-8 XML and text/* types (including HTML)
80+
if (/^\s*(?:text\/\S*|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
81+
return new Blob(["\ufeff", blob], {type: blob.type});
82+
}
83+
return blob;
84+
}
8485
, FileSaver = function(blob, name) {
86+
blob = auto_bom(blob);
8587
// First try a.download, then web filesystem, then object URLs
8688
var
8789
filesaver = this
@@ -135,10 +137,6 @@ var saveAs = saveAs
135137
revoke(object_url);
136138
return;
137139
}
138-
// prepend BOM for UTF-8 XML and text/plain types
139-
if (/^\s*(?:text\/(?:plain|xml)|application\/xml|\S*\/\S*\+xml)\s*;.*charset\s*=\s*utf-8/i.test(blob.type)) {
140-
blob = new Blob(["\ufeff", blob], {type: blob.type});
141-
}
142140
// Object and web filesystem URLs have a problem saving in Google Chrome when
143141
// viewed in a tab, so I force save with application/octet-stream
144142
// http://code.google.com/p/chromium/issues/detail?id=91158
@@ -211,6 +209,13 @@ var saveAs = saveAs
211209
return new FileSaver(blob, name);
212210
}
213211
;
212+
// IE 10+ (native saveAs)
213+
if (typeof navigator !== "undefined" && navigator.msSaveOrOpenBlob) {
214+
return function(blob, name) {
215+
return navigator.msSaveOrOpenBlob(auto_bom(blob), name);
216+
};
217+
}
218+
214219
FS_proto.abort = function() {
215220
var filesaver = this;
216221
filesaver.readyState = filesaver.DONE;
@@ -245,4 +250,4 @@ if (typeof module !== "undefined" && module.exports) {
245250
define([], function() {
246251
return saveAs;
247252
});
248-
}
253+
}

FileSaver.min.js

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,3 +102,8 @@ uglifyjs FileSaver.js --comments /@source/ > FileSaver.min.js
102102
```
103103

104104
Please make sure you build a production version before submitting a pull request.
105+
106+
Bower Installation
107+
------------------
108+
109+
Please see the [this repo](https://github.com/Teleborder/FileSaver.js) for a bower-compatible fork of FileSaver.js, available under the package name `file-saver.js`.

bower.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"name": "file-saver.js",
33
"main": "FileSaver.js",
4-
"version": "1.20150304.1",
4+
"version": "1.20150507.2",
55
"homepage": "https://github.com/Teleborder/FileSaver.js",
66
"authors": [
77
"Eli Grey (http://eligrey.com)"

0 commit comments

Comments
 (0)