jQuery AJAX wrapper for GM_xmlhttpRequest
This script should not be not be installed directly. It is a library for other scripts to include with the meta directive // @require https://update.greasyfork.org/scripts/401399/938754/GM%20XHR.js
// ==UserScript== // @name GM XHR // @author Ryan Greenberg, Martin Monperrus, Damien Clark, RobotOilInc // @version 1.1 // @description jQuery AJAX wrapper for GM_xmlhttpRequest // @homepageURL https://greasyfork.org/scripts/401399-gm-xhr // @supportURL https://greasyfork.org/scripts/401399-gm-xhr // @grant GM_xmlhttpRequest // ==/UserScript== /* jshint esversion: 6 */ function GM_XHR() { 'use strict'; this.type = null; this.url = null; this.async = null; this.username = null; this.password = null; this.status = null; this.headers = {}; this.readyState = null; this.abort = function () { this.readyState = 0; }; this.getAllResponseHeaders = function (name) { if (this.readyState !== 4) return ''; return this.responseHeaders; }; this.getResponseHeader = function (header) { let value = null; if (this.responseHeaders) { const regex = new RegExp(`^${header}: (.*)$`, 'igm'); const r###lt = []; let match = regex.exec(this.responseHeaders); while (match !== null) { r###lt.push(match[1]); match = regex.exec(this.responseHeaders); } if (r###lt.length > 0) { value = r###lt.join(', '); } } return value; }; this.open = function (type, url, async, username, password) { this.type = type || null; this.url = url || null; this.async = async || null; this.username = username || null; this.password = password || null; this.readyState = 1; }; this.setRequestHeader = function (name, value) { this.headers[name] = value; }; this.send = function (data) { this.data = data; const that = this; if (typeof GM.xmlHttpRequest === 'undefined' && typeof GM_xmlhttpRequest === 'undefined') { throw new Error("You need to enable 'GM.xmlHttpRequest' or 'GM_xmlhttpRequest'."); } // Detect if using older GM API (or other userscript engines) const agent = (typeof GM_xmlhttpRequest === 'undefined') ? GM.xmlHttpRequest : GM_xmlhttpRequest; // https://github.com/scriptish/scriptish/wiki/GM_xmlhttpRequest agent({ method: this.type, url: this.url, headers: this.headers, data: this.data, responseType: this.responseType, onload(rsp) { for (const k in Object.getOwnPropertyNames(rsp)) { that[Object.getOwnPropertyNames(rsp)[k]] = rsp[Object.getOwnPropertyNames(rsp)[k]]; } if (that.onload) that.onload(); else that.onreadystatechange(); }, onerror(rsp) { for (const k in Object.getOwnPropertyNames(rsp)) { that[Object.getOwnPropertyNames(rsp)[k]] = rsp[Object.getOwnPropertyNames(rsp)[k]]; } if (that.onload) that.onload(); else that.onreadystatechange(); }, }); }; }