Merge pull request #1962 from yurydelendik/ie10-1
Adds overrideMimeType for IE10 and discontinues readAsBinaryString use
This commit is contained in:
commit
1d3aba25a9
@ -124,24 +124,63 @@
|
|||||||
};
|
};
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
// No readAsArrayBuffer ?
|
||||||
|
(function checkFileReaderReadAsArrayBuffer() {
|
||||||
|
if (typeof FileReader === 'undefined')
|
||||||
|
return; // FileReader is not implemented
|
||||||
|
var frPrototype = FileReader.prototype;
|
||||||
|
// Older versions of Firefox might not have readAsArrayBuffer
|
||||||
|
if ('readAsArrayBuffer' in frPrototype)
|
||||||
|
return; // readAsArrayBuffer is implemented
|
||||||
|
Object.defineProperty(frPrototype, 'readAsArrayBuffer', {
|
||||||
|
value: function fileReaderReadAsArrayBuffer(blob) {
|
||||||
|
var fileReader = new FileReader();
|
||||||
|
var originalReader = this;
|
||||||
|
fileReader.onload = function fileReaderOnload(evt) {
|
||||||
|
var data = evt.target.result;
|
||||||
|
var buffer = new ArrayBuffer(data.length);
|
||||||
|
var uint8Array = new Uint8Array(buffer);
|
||||||
|
|
||||||
|
for (var i = 0, ii = data.length; i < ii; i++)
|
||||||
|
uint8Array[i] = data.charCodeAt(i);
|
||||||
|
|
||||||
|
Object.defineProperty(originalReader, 'result', {
|
||||||
|
value: buffer,
|
||||||
|
enumerable: true,
|
||||||
|
writable: false,
|
||||||
|
configurable: true
|
||||||
|
});
|
||||||
|
|
||||||
|
var event = document.createEvent('HTMLEvents');
|
||||||
|
event.initEvent('load', false, false);
|
||||||
|
originalReader.dispatchEvent(event);
|
||||||
|
};
|
||||||
|
fileReader.readAsBinaryString(blob);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
})();
|
||||||
|
|
||||||
// No XMLHttpRequest.response ?
|
// No XMLHttpRequest.response ?
|
||||||
(function checkXMLHttpRequestResponseCompatibility() {
|
(function checkXMLHttpRequestResponseCompatibility() {
|
||||||
var xhrPrototype = XMLHttpRequest.prototype;
|
var xhrPrototype = XMLHttpRequest.prototype;
|
||||||
|
if (!('overrideMimeType' in xhrPrototype)) {
|
||||||
|
// IE10 might have response, but not overrideMimeType
|
||||||
|
Object.defineProperty(xhrPrototype, 'overrideMimeType', {
|
||||||
|
value: function xmlHttpRequestOverrideMimeType(mimeType) {}
|
||||||
|
});
|
||||||
|
}
|
||||||
if ('response' in xhrPrototype ||
|
if ('response' in xhrPrototype ||
|
||||||
'mozResponseArrayBuffer' in xhrPrototype ||
|
'mozResponseArrayBuffer' in xhrPrototype ||
|
||||||
'mozResponse' in xhrPrototype ||
|
'mozResponse' in xhrPrototype ||
|
||||||
'responseArrayBuffer' in xhrPrototype)
|
'responseArrayBuffer' in xhrPrototype)
|
||||||
return;
|
return;
|
||||||
// IE ?
|
// IE9 ?
|
||||||
if (typeof VBArray !== 'undefined') {
|
if (typeof VBArray !== 'undefined') {
|
||||||
Object.defineProperty(xhrPrototype, 'response', {
|
Object.defineProperty(xhrPrototype, 'response', {
|
||||||
get: function xmlHttpRequestResponseGet() {
|
get: function xmlHttpRequestResponseGet() {
|
||||||
return new Uint8Array(new VBArray(this.responseBody).toArray());
|
return new Uint8Array(new VBArray(this.responseBody).toArray());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
Object.defineProperty(xhrPrototype, 'overrideMimeType', {
|
|
||||||
value: function xmlHttpRequestOverrideMimeType(mimeType) {}
|
|
||||||
});
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1942,20 +1942,13 @@ window.addEventListener('change', function webViewerChange(evt) {
|
|||||||
// Read the local file into a Uint8Array.
|
// Read the local file into a Uint8Array.
|
||||||
var fileReader = new FileReader();
|
var fileReader = new FileReader();
|
||||||
fileReader.onload = function webViewerChangeFileReaderOnload(evt) {
|
fileReader.onload = function webViewerChangeFileReaderOnload(evt) {
|
||||||
var data = evt.target.result;
|
var buffer = evt.target.result;
|
||||||
var buffer = new ArrayBuffer(data.length);
|
|
||||||
var uint8Array = new Uint8Array(buffer);
|
var uint8Array = new Uint8Array(buffer);
|
||||||
|
|
||||||
for (var i = 0; i < data.length; i++)
|
|
||||||
uint8Array[i] = data.charCodeAt(i);
|
|
||||||
|
|
||||||
PDFView.open(uint8Array, 0);
|
PDFView.open(uint8Array, 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
// Read as a binary string since "readAsArrayBuffer" is not yet
|
|
||||||
// implemented in Firefox.
|
|
||||||
var file = files[0];
|
var file = files[0];
|
||||||
fileReader.readAsBinaryString(file);
|
fileReader.readAsArrayBuffer(file);
|
||||||
document.title = file.name;
|
document.title = file.name;
|
||||||
|
|
||||||
// URL does not reflect proper document location - hiding some icons.
|
// URL does not reflect proper document location - hiding some icons.
|
||||||
|
Loading…
x
Reference in New Issue
Block a user