You can make use of the download attribute of the anchor tag(I don't know how well supported it is) and the html5 file api.
<a href = "#" id = "save" download="data.json">Save Canvas 1</a>
Load Canvas<input type="file" id="load" />
$( "#save" ).click(function( event ) {
this.href = 'data:plain/text,' + JSON.stringify(canvas1)
});
$( "#load" ).change(function( event ) {
var fr = new FileReader();
fr.onload = function(){
canvas2.loadFromJSON(this.result, canvas2.renderAll.bind(canvas2));
}
fr.readAsText(this.files[0]);
});
Here is a version or new IE (IE11 at least)
$( "#save" ).click(function( event ) {
event.preventDefault();
var blob = new Blob([JSON.stringify(canvas1)],{type:'application/json'});
navigator.msSaveOrOpenBlob(blob, 'data.json');
});