您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Super Light AJAX plugin by IvanSkvortsov
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greatest.deepsurf.us/scripts/32009/209806/Super%20Light%20AJAX%20plugin.js
// ==UserScript== // @name Super Light AJAX plugin // @description Super Light AJAX plugin by IvanSkvortsov // @description:ru Супер упрощенная версия AJAX плагина от IvanSkvortsov // @include *://* // @author IvanSkvortsov // @date 2017.08.04 // @version 1.0.2 // @grant none // ==/UserScript== (function(){ var lqueue = [], lrequestInProgress = false, lqueueCleaned = true; function XHttpRequestLight(){ var request = lqueue[0], xhttp = null, i, key, activeXs = ['Msxml3.XMLHTTP', 'Msxml2.XMLHTTP.6.0', 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP', 'Microsoft.XMLHTTP',]; if(!( request && (lrequestInProgress === false || request.async === true) && lqueue.length > 0 )) return; // handle request: request.method = request.method || 'GET'; if( request.method.toUpperCase() === 'GET' && request.data ){ request.url += '?' + request.data; request.data = null; } request.async = typeof request.async === 'boolean' ? request.async : true; // createXmlHttpRequest: if( window.XMLHttpRequest ) xhttp = new XMLHttpRequest(); else if( window.ActiveXObject ){ for( i = 0; i < activeXs.length; ++i ){ try{xhttp = new ActiveXObject(activeXs[i]);} catch(error){continue;} break; } if( !xhttp ){ console.error("[XHttpRequestLight] can't create ActiveXObject"); return; } }else{ console.error("[XHttpRequestLight] can't create XmlHttpRequest object"); return; } xhttp.open( request.method, request.url, request.async ); lrequestInProgress = true; lqueue.shift(); for( key in request.headers ) xhttp.setRequestHeader( key, request.headers[key] ); xhttp.url = request.url; var events = ['onabort', 'onerror', 'onload', 'onloadend', 'onloadstart', 'onprogress', 'onreadystatechange', 'ontimeout',]; // handle XmlHttpRequest events events.forEach(function(type){ if( request[type] ){ xhttp[type] = function(event){ xhttp.lengthComputable = event.lengthComputable || false; xhttp.loaded = event.loaded || 0; xhttp.total = event.total || 0; request[type].call(xhttp, xhttp.responseText); if( type === 'onerror' || type === 'onload' || (type === 'onreadystatechange' && xhttp.readyState == 4 && xhttp.status == 200 && !request.onload)){ lrequestInProgress = false; request.delay = request.delay > 20 ? request.delay : 20; setTimeout( XHttpRequestLight, request.delay ); } }; } }); } window.ISL = window.ISL || {}; // AJAX API ISL.lajaxAddXHR = function(){ var request; switch(arguments.length){ case 0: return; case 1: request = arguments[0]; if( request.length ) request.forEach( function(req){ lqueue.push(req);} ); else lqueue.push(request); break; default: console.error("[lajaxAddXHR] invalid number of arguments: " + arguments.length); return; } lqueueCleaned = false; }; ISL.lajax = function(){ this.lajaxAddXHR(arguments); XHttpRequestLight(); }; ISL.lajaxClean = function(){ lqueue.length = 0; lrequestInProgress = false; lqueueCleaned = true; }; ISL.lajaxLength = function(){ return lqueue.length; }; })();