UNPKG

@trim21/gm-fetch

Version:
57 lines (37 loc) 1.59 kB
# fetch for UserScript using fetch based on `GM.xmlHttpRequest` in userscript. **Don't forget to add `@grant GM.xmlHttpRequest` and `@connect` in your metadata** ## Introduction It's not 100% same with fetch API because some security limit like cors site request doesn't exist on `GM.xmlHttpRequest`. And `AbortSignal` is not supported very well due to the limitation of `GM.xmlHttpRequest`. You can set some HTTP headers allowed by `GM.xmlHttpRequest` but not allowed by standard fetch API. ## Example add this script to UserScript manager and visit <https://example.com/> ```javascript // ==UserScript== // @name new user script // @version 0.0.1 // @match https://example.com/* // @grant GM.xmlHttpRequest // @require https://cdn.jsdelivr.net/npm/@trim21/gm-fetch // @run-at document-end // @connect httpbin.org // ==/UserScript== (async () => { const res = await GM_fetch("https://httpbin.org/headers", { method: "GET" }); const data = await res.json(); console.log(data); })(); ``` (you can't use `@require https://cdn.jsdelivr.net/npm/@trim21/gm-fetch` directly if you want to upload your script to GreasyFork, you will need to specify version you want to use, for example `@require https://cdn.jsdelivr.net/npm/@trim21/gm-fetch@0.1.15`) ## if you are using js bundler ES Module: ```javascript import GM_fetch from "@trim21/gm-fetch"; ``` ## Browser Compatibility This package is using `Request` and `Response` class, it so requires a browser with fetch API support. <https://caniuse.com/?search=Blob.stream> ## Licence MIT