Invalidstateerror In Internet Explorer 11 During Blob Creation
I'm getting an InvalidStateError at the blob creation line on IE 11. Needless to say, it works in Chrome and Firefox. I can see that the binary data is my client side. Are there a
Solution 1:
After instantiating an XmlHttpRequest
with xhr.responseType = "blob"
I was getting an InvalidStateError
.
However, moving xhr.responseType = "blob"
to onloadstart
solved it for me! :)
xhr.onloadstart = function(ev) {
xhr.responseType = "blob";
}
Solution 2:
Spent some time on this and actually found out adding new Uint8Array
works:
var blob = newBlob([newUint8Array(request.response)], {type: 'application/pdf'});
Solution 3:
Is not a elegant way but it works on IE8 - IE11:
var myForm = document.createElement("form");
myForm.method = "POST";
myForm.action = strURL;
myForm.target = "_blank";
var myInput = document.createElement("input");
myInput.type = "text";
myInput.name = "sim";
myInput.value = JSON.stringify(/*data to post goes here*/);
myForm.appendChild(myInput);
document.body.appendChild(myForm);
myForm.submit();
$(myForm).hide();
Solution 4:
You need to use a BlobBuilder in that case.
From: https://github.com/bpampuch/pdfmake/issues/294#issuecomment-104029716
try {
blob = newBlob([result], { type: 'application/pdf' });
}
catch (e) {
// Old browser, need to use blob builderwindow.BlobBuilder = window.BlobBuilder ||
window.WebKitBlobBuilder ||
window.MozBlobBuilder ||
window.MSBlobBuilder;
if (window.BlobBuilder) {
var bb = newBlobBuilder();
bb.append(result);
blob = bb.getBlob("application/pdf");
}
}
Solution 5:
After much searching this worked for me on IE, Edge and Chrome
var xhr = newXMLHttpRequest();
xhr.onloadstart = function (ev) {
xhr.responseType = "blob";
};
xhr.onreadystatechange = function () {
if (xhr.readyState === 4 && xhr.status === 200) {
if (!window.navigator.msSaveOrOpenBlob) {
var url = (window.URL || window.webkitURL).createObjectURL(xhr.response);
var aLink = document.createElement("a");
document.body.appendChild(aLink);
aLink.href = url;
aLink.download = filename;
aLink.click();
} else {
var fileData = [xhr.response];
blobObject = newBlob(fileData);
window.navigator.msSaveOrOpenBlob(blobObject, filename);
}
}
};
Post a Comment for "Invalidstateerror In Internet Explorer 11 During Blob Creation"