Skip to content

Commit

Permalink
Use Blob api to generate data links in download saver
Browse files Browse the repository at this point in the history
This should fix crashing on large wikis under chrome
  see chrome bug: https://code.google.com/p/chromium/issues/detail?id=103234
This should also speed up generating the download html by a couple of seconds
  it avoids repeatedly marshalling the base64 encoded href string across the sandbox boundary
  it avoids some time and memory consumed by "large" dom manipulation
  major remaining delay is in encodeURIComponent
    TODO: consider using iconv on the server
    TODO: consider async invocation of regular expressions to avoid client "lockup"

Conflicts:
	core/modules/savers/download.js
  • Loading branch information
natecain committed Oct 1, 2013
1 parent becd0f8 commit aef8e63
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion core/modules/savers/download.js
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,12 @@ DownloadSaver.prototype.save = function(text) {
// Set up the link
var link = document.createElement("a");
link.setAttribute("target","_blank");
link.setAttribute("href","data:text/html," + encodeURIComponent(text));
if(Blob != undefined) {
var blob = new Blob([encodeURIComponent(text)], {type: "text/html"});
link.setAttribute("href", URL.createObjectURL(blob));
} else {
link.setAttribute("href","data:text/html," + encodeURIComponent(text));
}
link.setAttribute("download",filename);
document.body.appendChild(link);
link.click();
Expand Down

0 comments on commit aef8e63

Please sign in to comment.