fr_b02 / petri / doc / jquery / jszip-utils / dist / jszip-utils.js
Historique | Voir | Annoter | Télécharger (4,378 ko)
1 |
/*!
|
---|---|
2 |
|
3 |
JSZipUtils - A collection of cross-browser utilities to go along with JSZip.
|
4 |
<http://stuk.github.io/jszip-utils>
|
5 |
|
6 |
(c) 2014 Stuart Knightley, David Duponchel
|
7 |
Dual licenced under the MIT license or GPLv3. See https://raw.github.com/Stuk/jszip-utils/master/LICENSE.markdown.
|
8 |
|
9 |
*/
|
10 |
!function(e){"object"==typeof exports?module.exports=e():"function"==typeof define&&define.amd?define(e):"undefined"!=typeof window?window.JSZipUtils=e():"undefined"!=typeof global?global.JSZipUtils=e():"undefined"!=typeof self&&(self.JSZipUtils=e())}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);throw new Error("Cannot find module '"+o+"'")}var f=n[o]={exports:{}};t[o][0].call(f.exports,function(e){var n=t[o][1][e];return s(n?n:e)},f,f.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({1:[function(require,module,exports){ |
11 |
'use strict';
|
12 |
|
13 |
var JSZipUtils = {};
|
14 |
// just use the responseText with xhr1, response with xhr2.
|
15 |
// The transformation doesn't throw away high-order byte (with responseText)
|
16 |
// because JSZip handles that case. If not used with JSZip, you may need to
|
17 |
// do it, see https://developer.mozilla.org/En/Using_XMLHttpRequest#Handling_binary_data
|
18 |
JSZipUtils._getBinaryFromXHR = function (xhr) { |
19 |
// for xhr.responseText, the 0xFF mask is applied by JSZip
|
20 |
return xhr.response || xhr.responseText;
|
21 |
}; |
22 |
|
23 |
// taken from jQuery
|
24 |
function createStandardXHR() { |
25 |
try {
|
26 |
return new window.XMLHttpRequest(); |
27 |
} catch( e ) {}
|
28 |
} |
29 |
|
30 |
function createActiveXHR() { |
31 |
try {
|
32 |
return new window.ActiveXObject("Microsoft.XMLHTTP"); |
33 |
} catch( e ) {}
|
34 |
} |
35 |
|
36 |
// Create the request object
|
37 |
var createXHR = window.ActiveXObject ?
|
38 |
/* Microsoft failed to properly
|
39 |
* implement the XMLHttpRequest in IE7 (can't request local files),
|
40 |
* so we use the ActiveXObject when it is available
|
41 |
* Additionally XMLHttpRequest can be disabled in IE7/IE8 so
|
42 |
* we need a fallback.
|
43 |
*/
|
44 |
function() {
|
45 |
return createStandardXHR() || createActiveXHR();
|
46 |
} : |
47 |
// For all other browsers, use the standard XMLHttpRequest object
|
48 |
createStandardXHR; |
49 |
|
50 |
|
51 |
|
52 |
JSZipUtils.getBinaryContent = function(path, callback) { |
53 |
/*
|
54 |
* Here is the tricky part : getting the data.
|
55 |
* In firefox/chrome/opera/... setting the mimeType to 'text/plain; charset=x-user-defined'
|
56 |
* is enough, the result is in the standard xhr.responseText.
|
57 |
* cf https://developer.mozilla.org/En/XMLHttpRequest/Using_XMLHttpRequest#Receiving_binary_data_in_older_browsers
|
58 |
* In IE <= 9, we must use (the IE only) attribute responseBody
|
59 |
* (for binary data, its content is different from responseText).
|
60 |
* In IE 10, the 'charset=x-user-defined' trick doesn't work, only the
|
61 |
* responseType will work :
|
62 |
* http://msdn.microsoft.com/en-us/library/ie/hh673569%28v=vs.85%29.aspx#Binary_Object_upload_and_download
|
63 |
*
|
64 |
* I'd like to use jQuery to avoid this XHR madness, but it doesn't support
|
65 |
* the responseType attribute : http://bugs.jquery.com/ticket/11461
|
66 |
*/
|
67 |
try {
|
68 |
|
69 |
var xhr = createXHR();
|
70 |
|
71 |
xhr.open('GET', path, true); |
72 |
|
73 |
// recent browsers
|
74 |
if ("responseType" in xhr) { |
75 |
xhr.responseType = "arraybuffer";
|
76 |
} |
77 |
|
78 |
// older browser
|
79 |
if(xhr.overrideMimeType) {
|
80 |
xhr.overrideMimeType("text/plain; charset=x-user-defined");
|
81 |
} |
82 |
|
83 |
xhr.onreadystatechange = function(evt) { |
84 |
var file, err;
|
85 |
// use `xhr` and not `this`... thanks IE
|
86 |
if (xhr.readyState === 4) { |
87 |
if (xhr.status === 200 || xhr.status === 0) { |
88 |
file = null;
|
89 |
err = null;
|
90 |
try {
|
91 |
file = JSZipUtils._getBinaryFromXHR(xhr); |
92 |
} catch(e) {
|
93 |
err = new Error(e);
|
94 |
} |
95 |
callback(err, file); |
96 |
} else {
|
97 |
callback(new Error("Ajax error for " + path + " : " + this.status + " " + this.statusText), null); |
98 |
} |
99 |
} |
100 |
}; |
101 |
|
102 |
xhr.send(); |
103 |
|
104 |
} catch (e) {
|
105 |
callback(new Error(e), null); |
106 |
} |
107 |
}; |
108 |
|
109 |
// export
|
110 |
module.exports = JSZipUtils; |
111 |
|
112 |
// enforcing Stuk's coding style
|
113 |
// vim: set shiftwidth=4 softtabstop=4:
|
114 |
|
115 |
},{}]},{},[1])
|
116 |
(1)
|
117 |
}); |
118 |
; |