|
124 | 124 | };
|
125 | 125 | })();
|
126 | 126 |
|
| 127 | +// No readAsArrayBuffer ? |
| 128 | +(function checkFileReaderReadAsArrayBuffer() { |
| 129 | + if (typeof FileReader === 'undefined') |
| 130 | + return; // FileReader is not implemented |
| 131 | + var frPrototype = FileReader.prototype; |
| 132 | + // Older versions of Firefox might not have readAsArrayBuffer |
| 133 | + if ('readAsArrayBuffer' in frPrototype) |
| 134 | + return; // readAsArrayBuffer is implemented |
| 135 | + Object.defineProperty(frPrototype, 'readAsArrayBuffer', { |
| 136 | + value: function fileReaderReadAsArrayBuffer(blob) { |
| 137 | + var fileReader = new FileReader(); |
| 138 | + var originalReader = this; |
| 139 | + fileReader.onload = function fileReaderOnload(evt) { |
| 140 | + var data = evt.target.result; |
| 141 | + var buffer = new ArrayBuffer(data.length); |
| 142 | + var uint8Array = new Uint8Array(buffer); |
| 143 | + |
| 144 | + for (var i = 0, ii = data.length; i < ii; i++) |
| 145 | + uint8Array[i] = data.charCodeAt(i); |
| 146 | + |
| 147 | + Object.defineProperty(originalReader, 'result', { |
| 148 | + value: buffer, |
| 149 | + enumerable: true, |
| 150 | + writable: false, |
| 151 | + configurable: true |
| 152 | + }); |
| 153 | + |
| 154 | + var event = document.createEvent('HTMLEvents'); |
| 155 | + event.initEvent('load', false, false); |
| 156 | + originalReader.dispatchEvent(event); |
| 157 | + }; |
| 158 | + fileReader.readAsBinaryString(blob); |
| 159 | + } |
| 160 | + }); |
| 161 | +})(); |
| 162 | + |
127 | 163 | // No XMLHttpRequest.response ?
|
128 | 164 | (function checkXMLHttpRequestResponseCompatibility() {
|
129 | 165 | var xhrPrototype = XMLHttpRequest.prototype;
|
| 166 | + if (!('overrideMimeType' in xhrPrototype)) { |
| 167 | + // IE10 might have response, but not overrideMimeType |
| 168 | + Object.defineProperty(xhrPrototype, 'overrideMimeType', { |
| 169 | + value: function xmlHttpRequestOverrideMimeType(mimeType) {} |
| 170 | + }); |
| 171 | + } |
130 | 172 | if ('response' in xhrPrototype ||
|
131 | 173 | 'mozResponseArrayBuffer' in xhrPrototype ||
|
132 | 174 | 'mozResponse' in xhrPrototype ||
|
133 | 175 | 'responseArrayBuffer' in xhrPrototype)
|
134 | 176 | return;
|
135 |
| - // IE ? |
| 177 | + // IE9 ? |
136 | 178 | if (typeof VBArray !== 'undefined') {
|
137 | 179 | Object.defineProperty(xhrPrototype, 'response', {
|
138 | 180 | get: function xmlHttpRequestResponseGet() {
|
139 | 181 | return new Uint8Array(new VBArray(this.responseBody).toArray());
|
140 | 182 | }
|
141 | 183 | });
|
142 |
| - Object.defineProperty(xhrPrototype, 'overrideMimeType', { |
143 |
| - value: function xmlHttpRequestOverrideMimeType(mimeType) {} |
144 |
| - }); |
145 | 184 | return;
|
146 | 185 | }
|
147 | 186 |
|
|
0 commit comments