您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
HttpRequest for any type of request and HttpRequestHTML to request webpage. Supports caching of responses to handle status 304.
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/405144/815221/HttpRequest.js
- // ==UserScript==
- // @name HttpRequest
- // @namespace hoehleg.userscripts.private
- // @version 0.1
- // @description HttpRequest for any type of request and HttpRequestHTML to request webpage. Supports caching of responses to handle status 304.
- // @author Gerrit Höhle
- //
- // @grant GM_xmlhttpRequest
- //
- // @require https://gf.qytechs.cn/scripts/405143-simplecache/code/SimpleCache.js
- // @require https://gf.qytechs.cn/scripts/405144-httprequest/code/HttpRequest.js
- //
- // @require https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js
- //
- // ==/UserScript==
- /* jshint esnext: true */
- /* globals globals $, jQuery, SimpleCache */
- const HttpRequest = (() => {
- const responsesCache = new SimpleCache({ keyExtractor: (httpRequest) => [ httpRequest.method, httpRequest.url, httpRequest.headers, httpRequest.data, httpRequest.params ].join() });
- const urlWithParams = (url, paramsObject) => {
- const params = Object.entries(paramsObject).map(([key, value]) => key + '=' + value).join('&');
- return (url.length > 0) ? url + '?' + params : params;
- };
- return class HttpRequest {
- constructor({ method, url = window.location.href, onLoad = () => {}, onError = () => {}, headers = '', data = '', keepInCacheTimoutMs = 10 * 60000, params = {} } = {}) {
- Object.assign(this, { method, url, onLoad, onError, headers, data, keepInCacheTimoutMs });
- }
- send() {
- const method = this.method.toUpperCase();
- let url = this.url;
- let headers = this.headers;
- let data = this.data;
- const onload = (response) => {
- switch (response.status) {
- case 200:
- if (this.keepInCacheTimoutMs > 0) {
- responsesCache.set(this, response, this.keepInCacheTimoutMs);
- }
- break;
- case 304:
- if (this.isCached()) {
- response = this.getFromCache();
- response.status = 304;
- }
- break;
- default:
- this.onError(response);
- return;
- }
- this.onLoad(response);
- };
- const onerror = this.onError;
- switch (method) {
- case 'GET':
- if (this.params) {
- url = urlWithParams(url, this.params);
- }
- break;
- case 'POST':
- case 'PUT':
- Object.assign(headers, { 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8' });
- if (this.params) {
- data = urlWithParams(data, this.params);
- }
- break;
- }
- return GM_xmlhttpRequest({ method, url, onload, onerror: this.onError, headers: this.headers, data });
- }
- isCached() {
- return responsesCache.has(this);
- }
- getFromCache() {
- return responsesCache.get(this);
- }
- };
- })();
- class HttpRequestHtml extends HttpRequest {
- constructor({ url, method = "GET", onSuccess = () => {}, onError, headers, data, keepInCacheTimoutMs } = {}) {
- super({ method, url, onLoad: (response) => {
- if (response.status == 200) {
- response.responseHtml = new DOMParser().parseFromString(response.responseText, 'text/html');
- onSuccess(response);
- }
- }, onError, headers, data, keepInCacheTimoutMs });
- }
- }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址