@trim21/gm-fetch
Version:
fetch for UserScript
57 lines (37 loc) • 1.59 kB
Markdown
# fetch for UserScript
using fetch based on `GM.xmlHttpRequest` in userscript.
**Don't forget to add ` GM.xmlHttpRequest` and `` 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 ` 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 ` 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