您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Browserify'd version of ajax-interceptor
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/11365/65323/Library%20for%20intercepting%20AJAX%20communications.js
- // ==UserScript==
- // @name Library for intercepting AJAX communications
- // @version 1.0
- // @author slorber (sauce: https://github.com/slorber/ajax-interceptor)
- // @description Browserify'd version of ajax-interceptor
- // @namespace MrHat.Torn
- // ==/UserScript==
- require=(function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o<r.length;o++)s(r[o]);return s})({"ajax-intercept":[function(require,module,exports){
- 'use strict';
- var COMPLETED_READY_STATE = 4;
- var RealXHRSend = XMLHttpRequest.prototype.send;
- var requestCallbacks = [];
- var responseCallbacks = [];
- var wired = false;
- function arrayRemove(array,item) {
- var index = array.indexOf(item);
- if (index > -1) {
- array.splice(index, 1);
- } else {
- throw new Error("Could not remove " + item + " from array");
- }
- }
- function fireCallbacks(callbacks,xhr) {
- for( var i = 0; i < callbacks.length; i++ ) {
- callbacks[i](xhr);
- }
- }
- exports.addRequestCallback = function(callback) {
- requestCallbacks.push(callback);
- };
- exports.removeRequestCallback = function(callback) {
- arrayRemove(requestCallbacks,callback);
- };
- exports.addResponseCallback = function(callback) {
- responseCallbacks.push(callback);
- };
- exports.removeResponseCallback = function(callback) {
- arrayRemove(responseCallbacks,callback);
- };
- function fireResponseCallbacksIfCompleted(xhr) {
- if( xhr.readyState === COMPLETED_READY_STATE ) {
- fireCallbacks(responseCallbacks,xhr);
- }
- }
- function proxifyOnReadyStateChange(xhr) {
- var realOnReadyStateChange = xhr.onreadystatechange;
- if ( realOnReadyStateChange ) {
- xhr.onreadystatechange = function() {
- fireResponseCallbacksIfCompleted(xhr);
- realOnReadyStateChange();
- };
- }
- }
- exports.wire = function() {
- if ( wired ) throw new Error("Ajax interceptor already wired");
- // Override send method of all XHR requests
- XMLHttpRequest.prototype.send = function() {
- // Fire request callbacks before sending the request
- fireCallbacks(requestCallbacks,this);
- // Wire response callbacks
- if( this.addEventListener ) {
- var self = this;
- this.addEventListener("readystatechange", function() {
- fireResponseCallbacksIfCompleted(self);
- }, false);
- }
- else {
- proxifyOnReadyStateChange(this);
- }
- RealXHRSend.apply(this, arguments);
- };
- wired = true;
- };
- exports.unwire = function() {
- if ( !wired ) throw new Error("Ajax interceptor not currently wired");
- XMLHttpRequest.prototype.send = RealXHRSend;
- wired = false;
- };
- },{}]},{},[]);