player 发表于 2022-9-10 11:30:05

GM_download怎么下载自身请求的json

本帖最后由 player 于 2022-9-10 11:31 编辑

let link = document.createElement('a');
link.download = 'config.json';
link.href = 'data:text/plain,' + JSON.stringify(data);
link.click();

用GM_download能实现这种效果吗,有必要用GM_download吗

steven026 发表于 2022-9-10 11:39:45

```
GM_download(URL.createObjectURL(new Blob()), 'config.json')
```
GM_download可以这么写
GM_download主要优势是可以跨域,只需要下载同源的话具体看你喜好吧

李恒道 发表于 2022-9-10 11:42:25

楼上正解
另外这种方式不太推荐
可以考虑使用filesave的库
之前写脚本根据实践click这种方式使用人群广了之后很容易出现点击不下载只弹出的问题
原因不明

cxxjackie 发表于 2022-9-10 12:21:43

这样就行:

```js
GM_download('data:text/plain,' + JSON.stringify(data), 'config.txt');
```

要下载为json格式,必须首先在油猴设置里将json格式加入下载白名单:
!(data/attachment/forum/202209/10/120923x5druygvjfcftdeq.png)
这样改成json后下载下来仍然会变成txt,原因是GM\_download会根据文件mine类型自动修改后缀,改成这样即可:

```js
GM_download('data:application/json,' + JSON.stringify(data), 'config.json');
```

GM\_download这个API其实挺蛋疼的,除了自动改后缀,设置不同的下载模式也会有不同表现,如果脚本要发布给别人用,别人改过设置就有可能得不到预期结果。当然GM\_download也有其优势,比如直接下载多个文件,原生方式很可能会被浏览器阻止。

player 发表于 2022-9-10 15:21:40

cxxjackie 发表于 2022-9-10 12:21
这样就行:

```js


脚本猫哪里设置啊,没找到

player 发表于 2022-9-10 15:36:17

cxxjackie 发表于 2022-9-10 12:21
这样就行:

```js


!(data/attachment/forum/202209/10/153352lqe0u0k55gw075hz.png)

我试了一下,脚本猫不用设置两种方式都可以。而且plain不用改json效果也一样。

cxxjackie 发表于 2022-9-10 20:43:33

player 发表于 2022-9-10 15:21
脚本猫哪里设置啊,没找到

tampermonkey的设置,脚本猫的实现逻辑不太一样。
页: [1]
查看完整版本: GM_download怎么下载自身请求的json