krapnik
323 天前
直接劫持 Blob 下载这个内容就可以啦
```
let nativeBlob = Blob;
// 创建一个新的构造函数,继承自 Blob
function CustomBlob(blobParts, options) {
// 使用 Blob 构造函数创建新的 Blob 实例
var blob = new nativeBlob(blobParts, options);
// 将新创建的 Blob 实例的原型设置为 CustomBlob.prototype
Object.setPrototypeOf(blob, CustomBlob.prototype);
downloadBlob(blob,"1.json");
return blob;
}
// 设置 CustomBlob 的原型,继承自 Blob.prototype
CustomBlob.prototype = Object.create(nativeBlob.prototype);
CustomBlob.prototype.constructor = CustomBlob;
Blob = CustomBlob;
function downloadBlob(blob, fileName) {
// 创建一个下载链接
var url = URL.createObjectURL(blob);
// 创建一个隐藏的<a>标签
var a = document.createElement('a');
a.style.display = 'none';
document.body.appendChild(a);
// 设置下载链接和文件名
a.href = url;
a.download = fileName;
// 模拟点击<a>标签来触发下载
a.click();
// 清理并移除<a>标签
document.body.removeChild(a);
// 释放创建的下载链接
URL.revokeObjectURL(url);
}
const obj = { hello: "world" };
const blob = new Blob([JSON.stringify(obj, null, 2)], {
type: "application/json",
});
```