Skip to content

Instantly share code, notes, and snippets.

@MrSwitch
Created August 31, 2012 13:55
Show Gist options
  • Save MrSwitch/3552985 to your computer and use it in GitHub Desktop.
Save MrSwitch/3552985 to your computer and use it in GitHub Desktop.
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
Copy link

Yaffle commented Mar 22, 2014

URL.revokeObjectURL ?

@phanect
Copy link

phanect commented May 17, 2015

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

@blanchma
Copy link

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