Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/trim21/gm-fetch
fetch API for `GM.xmlHttpRequest`
https://github.com/trim21/gm-fetch
fetch javascript userscript
Last synced: about 2 months ago
JSON representation
fetch API for `GM.xmlHttpRequest`
- Host: GitHub
- URL: https://github.com/trim21/gm-fetch
- Owner: trim21
- License: mit
- Created: 2022-05-31T23:00:29.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2024-10-14T15:41:53.000Z (4 months ago)
- Last Synced: 2024-10-21T00:01:37.973Z (4 months ago)
- Topics: fetch, javascript, userscript
- Language: TypeScript
- Homepage:
- Size: 5.81 MB
- Stars: 22
- Watchers: 2
- Forks: 3
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 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
```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/[email protected]`)## if you are using js bundler
ES Module:
```javascript
import GM_fetch from "@trim21/gm-fetch";
```CommonJS (not recommended):
```javascript
const GM_fetch = require("@trim21/gm-fetch");
```## Browser Compatibility
This package is using `Request` and `Response` class, it so requires a browser with fetch API support.
## Licence
MIT