这就是我为我的应用程序解决它的方法:
HTML: <a id="downloadAnchorElem" style="display:none"></a>
JS(纯JS,这里不是jQuery):
var dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(storageObj));
var dlAnchorElem = document.getElementById('downloadAnchorElem');
dlAnchorElem.setAttribute("href", dataStr );
dlAnchorElem.setAttribute("download", "scene.json");
dlAnchorElem.click();
在这种情况下,storageObj是要存储的js对象,“scene.json”只是生成的文件的示例名称。
与其他提出的方法相比,该方法具有以下优点:
不需要单击任何HTML元素
结果将按您的要求命名
不需要jQuery
我需要这种行为而不需要明确点击,因为我想在某些时候从js自动触发下载。
JS解决方案(无需HTML):
function downloadObjectAsJson(exportObj, exportName){
var dataStr = "data:text/json;charset=utf-8," + encodeURIComponent(JSON.stringify(exportObj));
var downloadAnchorNode = document.createElement('a');
downloadAnchorNode.setAttribute("href", dataStr);
downloadAnchorNode.setAttribute("download", exportName + ".json");
document.body.appendChild(downloadAnchorNode); // required for firefox
downloadAnchorNode.click();
downloadAnchorNode.remove();
}