Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
FileSaver window.saveAs shim
// window.saveAs
// Shims the saveAs method, using saveBlob in IE10.
// And for when Chrome and FireFox get round to implementing saveAs we have their vendor prefixes ready.
// But otherwise this creates a object URL resource and opens it on an anchor tag which contains the "download" attribute (Chrome)
// ... or opens it in a new tab (FireFox)
// @author Andrew Dodson
// @copyright MIT, BSD. Free to clone, modify and distribute for commercial and personal use.
window.saveAs || ( window.saveAs = (window.navigator.msSaveBlob ? function(b,n){ return window.navigator.msSaveBlob(b,n); } : false) || window.webkitSaveAs || window.mozSaveAs || window.msSaveAs || (function(){
// URL's
window.URL || (window.URL = window.webkitURL);
if(!window.URL){
return false;
}
return function(blob,name){
var url = URL.createObjectURL(blob);
// Test for download link support
if( "download" in document.createElement('a') ){
var a = document.createElement('a');
a.setAttribute('href', url);
a.setAttribute('download', name);
// Create Click event
var clickEvent = document.createEvent ("MouseEvent");
clickEvent.initMouseEvent ("click", true, true, window, 0,
event.screenX, event.screenY, event.clientX, event.clientY,
event.ctrlKey, event.altKey, event.shiftKey, event.metaKey,
0, null);
// dispatch click event to simulate download
a.dispatchEvent (clickEvent);
}
else{
// fallover, open resource in new tab.
window.open(url, '_blank', '');
}
};
})() );
@Yaffle

This comment has been minimized.

Show comment Hide comment
@Yaffle

Yaffle Mar 22, 2014

what is wrong with "a.click()" ?

Yaffle commented Mar 22, 2014

what is wrong with "a.click()" ?

@Yaffle

This comment has been minimized.

Show comment Hide comment
@Yaffle

Yaffle Mar 22, 2014

URL.revokeObjectURL ?

Yaffle commented Mar 22, 2014

URL.revokeObjectURL ?

@phanect

This comment has been minimized.

Show comment Hide comment
@phanect

phanect May 17, 2015

Not working on Firefox. I fixed it. (2nd commit is just a coding style fix)

phanect commented May 17, 2015

Not working on Firefox. I fixed it. (2nd commit is just a coding style fix)

@blanchma

This comment has been minimized.

Show comment Hide comment
@blanchma

blanchma Nov 3, 2015

Not working on Safari

blanchma commented Nov 3, 2015

Not working on Safari

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment