Ensure that the XMLHttpRequest
is open
ed before attempting to set the responseType
in the DOMCMapReaderFactory
, since IE fails otherwise (issue 8193)
I really cannot understand why this change is necessary, since modern browsers such as Firefox and Chrome work just fine with the old code. Hence this is patch is yet another "hack" that's needed just because IE apparently cannot just work like you'd expect. For consistency, the Node factory used in the CMap unit-tests is changed as well. Fixes 8193.
This commit is contained in:
parent
3705e5e459
commit
5c0c122a7d
@ -76,15 +76,17 @@ var DOMCMapReaderFactory = (function DOMCMapReaderFactoryClosure() {
|
||||
|
||||
DOMCMapReaderFactory.prototype = {
|
||||
fetch: function(params) {
|
||||
if (!params.name) {
|
||||
var name = params.name;
|
||||
if (!name) {
|
||||
return Promise.reject(new Error('CMap name must be specified.'));
|
||||
}
|
||||
return new Promise(function (resolve, reject) {
|
||||
var url = this.baseUrl + params.name;
|
||||
var url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
|
||||
|
||||
var request = new XMLHttpRequest();
|
||||
request.open('GET', url, true);
|
||||
|
||||
if (this.isCompressed) {
|
||||
url += '.bcmap';
|
||||
request.responseType = 'arraybuffer';
|
||||
}
|
||||
request.onreadystatechange = function () {
|
||||
@ -105,12 +107,11 @@ var DOMCMapReaderFactory = (function DOMCMapReaderFactoryClosure() {
|
||||
return;
|
||||
}
|
||||
reject(new Error('Unable to load ' +
|
||||
(this.isCompressed ? 'binary' : '') +
|
||||
' CMap at: ' + url));
|
||||
(this.isCompressed ? 'binary ' : '') +
|
||||
'CMap at: ' + url));
|
||||
}
|
||||
}.bind(this);
|
||||
|
||||
request.open('GET', url, true);
|
||||
request.send(null);
|
||||
}.bind(this));
|
||||
},
|
||||
|
@ -35,21 +35,19 @@ var NodeCMapReaderFactory = (function NodeCMapReaderFactoryClosure() {
|
||||
|
||||
NodeCMapReaderFactory.prototype = {
|
||||
fetch: function(params) {
|
||||
if (!params.name) {
|
||||
var name = params.name;
|
||||
if (!name) {
|
||||
return Promise.reject(new Error('CMap name must be specified.'));
|
||||
}
|
||||
return new Promise(function (resolve, reject) {
|
||||
var url = this.baseUrl + params.name;
|
||||
var url = this.baseUrl + name + (this.isCompressed ? '.bcmap' : '');
|
||||
|
||||
var fs = require('fs');
|
||||
if (this.isCompressed) {
|
||||
url += '.bcmap';
|
||||
}
|
||||
fs.readFile(url, function (error, data) {
|
||||
if (error || !data) {
|
||||
reject(new Error('Unable to load ' +
|
||||
(this.isCompressed ? 'binary' : '') +
|
||||
' CMap at: ' + url));
|
||||
(this.isCompressed ? 'binary ' : '') +
|
||||
'CMap at: ' + url));
|
||||
return;
|
||||
}
|
||||
resolve({
|
||||
|
Loading…
x
Reference in New Issue
Block a user