我想保存一个带有POST请求的登录后页面上请求的JSON文件。因为没有可用的API,所以我想下载使用Greasemonkey将页面加载为JSON文件时调用的脚本的响应。
该网页类似于domain.com/map,在加载期间调用domain.com/map/script: <iframe name="menuFrame" src="menu.htm" frameborder="1">
</iframe>
<iframe name="contentFrame" src="content.htm" frameborder="1">
</iframe>
<iframe name="footerFrame" src="footer.htm" frameborder="1">
</iframe>
。 domain.com/map/script的响应是我想要保存的实际JSON响应(本地甚至更好地使用FTP)。
答案 0 :(得分:3)
下面的完整演示代码:
(function (fetch, console) {
fetch('https://api.stackexchange.com/2.2/questions/36132760?site=stackoverflow')
.then(res => res.json())
.then(data => console.save(data));
console.save = function (data, filename) {
if (!data) {
console.error('Console.save: No data')
return;
}
if (!filename) filename = 'console.json'
if (typeof data === "object") {
data = JSON.stringify(data, undefined, 4);
}
var blob = new Blob([data], {type: 'text/json'}),
e = document.createEvent('MouseEvents'),
a = document.createElement('a');
a.download = filename;
a.href = window.URL.createObjectURL(blob);
a.dataset.downloadurl = ['text/json', a.download, a.href].join(':');
e.initMouseEvent('click', true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null);
a.dispatchEvent(e);
};
}).call(this, window.fetch, window.console || {});