|
390 | 390 | return n ? Math.round(x * (n = Math.pow(10, n))) / n : Math.round(x); |
391 | 391 | }; |
392 | 392 | d3.xhr = function(url, mimeType, callback) { |
393 | | - var xhr = {}, dispatch = d3.dispatch("progress", "load", "error"), headers = {}, response = d3_identity, request = new XMLHttpRequest(); |
394 | | - request.onreadystatechange = function() { |
395 | | - if (request.readyState === 4) { |
396 | | - var s = request.status; |
397 | | - !s && request.response || s >= 200 && s < 300 || s === 304 ? dispatch.load.call(xhr, response.call(xhr, request)) : dispatch.error.call(xhr, request); |
398 | | - } |
| 393 | + var xhr = {}, dispatch = d3.dispatch("progress", "load", "error"), headers = {}, response = d3_identity, request = new (window.XDomainRequest && /^(http(s)?:)?\/\//.test(url) ? XDomainRequest : XMLHttpRequest)(); |
| 394 | + "onload" in request ? request.onload = request.onerror = respond : request.onreadystatechange = function() { |
| 395 | + request.readyState > 3 && respond(); |
399 | 396 | }; |
| 397 | + function respond() { |
| 398 | + var s = request.status; |
| 399 | + !s && request.responseText || s >= 200 && s < 300 || s === 304 ? dispatch.load.call(xhr, response.call(xhr, request)) : dispatch.error.call(xhr, request); |
| 400 | + } |
400 | 401 | request.onprogress = function(event) { |
401 | 402 | var o = d3.event; |
402 | 403 | d3.event = event; |
|
430 | 431 | if (arguments.length === 2 && typeof data === "function") callback = data, data = null; |
431 | 432 | request.open(method, url, true); |
432 | 433 | if (mimeType != null && !("accept" in headers)) headers["accept"] = mimeType + ",*/*"; |
433 | | - for (var name in headers) request.setRequestHeader(name, headers[name]); |
| 434 | + if (request.setRequestHeader) for (var name in headers) request.setRequestHeader(name, headers[name]); |
434 | 435 | if (mimeType != null && request.overrideMimeType) request.overrideMimeType(mimeType); |
435 | 436 | if (callback != null) xhr.on("error", callback).on("load", function(request) { |
436 | 437 | callback(null, request); |
|
0 commit comments