/**
* @description:
* @param {Object} data json对象
* @param {String} file 文件名
* @return:
*/
saveJSON(data, filename) {
if (!data) {
alert("保存的数据为空");
return;
}
if (!filename) filename = "json.json";
if (typeof data === "object") {
data = JSON.stringify(data, undefined, 4);
}
// 要创建一个 blob 数据
let blob = new Blob([data], { type: "text/json" }),
a = document.createElement("a");
a.download = filename;
// 将blob转换为地址
// 创建 URL 的 Blob 对象
a.href = window.URL.createObjectURL(blob);
console.log(blob, "链接", a.href);
// 标签 data- 嵌入自定义属性 屏蔽后也可正常下载
a.dataset.downloadurl = ["text/json", a.download, a.href].join(":");
console.log(a, "dataset", a.dataset.downloadurl);
// 添加鼠标事件
let event = new MouseEvent("click", {});
console.log("事件", event);
// 向一个指定的事件目标派发一个事件
a.dispatchEvent(event);
},
初版
/**
* @description:
* @param {Object} data json对象
* @param {String} file 文件名
* @return:
*/
saveJSON(data, filename) {
if (!data) {
alert("保存的数据为空");
return;
}
if (!filename) filename = "json.json";
if (typeof data === "object") {
data = JSON.stringify(data, undefined, 4);
}
// 要创建一个 blob 数据
var blob = new Blob([data], { type: "text/json" }),
// 添加鼠标事件
e = document.createEvent("MouseEvents"),
a = document.createElement("a");
a.download = filename;
// 将blob转换为地址
// 创建 URL 的 Blob 对象
a.href = window.URL.createObjectURL(blob);
console.log(blob, "链接", a.href);
a.dataset.downloadurl = ["text/json", a.download, a.href].join(":");
console.log("dataset", a.dataset.downloadurl);
// web 标准中已废弃
// 用以在鼠标事件创建时初始化其属性的值
e.initMouseEvent(
"click",
true, // 是否可以冒泡
false,// 是否可以阻止事件默认行为
window,// 指向window对象
0, // 事件的鼠标点击数量
0, // 事件的屏幕的x坐标
0,
0, // 事件的客户端x坐标
0,
false, // 事件发生时 control 键是否被按下
false, // 事件发生时 alt 键是否被按下
false, // 事件发生时 shift 键是否被按下
false, // 事件发生时 meta 键是否被按下
0, // 鼠标按键值
null
);
// 向一个指定的事件目标派发一个事件
a.dispatchEvent(e);
},
网友评论