您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Restores blur out tiles on the Planet Romeo visitors tab for non-plus users
当前为
// ==UserScript== // @name Planet Romeo - Poor Men Plus // @namespace http://tampermonkey.net/ // @version 0.1.1 // @description Restores blur out tiles on the Planet Romeo visitors tab for non-plus users // @author Djamana // @match *://*.planetromeo.com/* //visitors // @grant none // @require //ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js // @namespace https://greasyfork.org/users/139428 // ==/UserScript== /* (function(window) { debugger var OriginalXHR = XMLHttpRequest; var XHRProxy = function() { this.xhr = new OriginalXHR(); function delegate(prop) { Object.defineProperty(this, prop, { get: function() { return this.xhr[prop]; }, set: function(value) { this.xhr.timeout = value; } }); } delegate.call(this, 'timeout'); delegate.call(this, 'responseType'); delegate.call(this, 'withCredentials'); delegate.call(this, 'onerror'); delegate.call(this, 'onabort'); delegate.call(this, 'onloadstart'); delegate.call(this, 'onloadend'); delegate.call(this, 'onprogress'); }; XHRProxy.prototype.open = function(method, url, async, username, password) { var ctx = this; function applyInterceptors(src) { ctx.responseText = ctx.xhr.responseText; for (var i=0; i < XHRProxy.interceptors.length; i++) { var applied = XHRProxy.interceptors[i](method, url, ctx.responseText, ctx.xhr.status); if (applied !== undefined) { ctx.responseText = applied; } } } function setProps() { ctx.readyState = ctx.xhr.readyState; ctx.responseText = ctx.xhr.responseText; ctx.responseURL = ctx.xhr.responseURL; ctx.responseXML = ctx.xhr.responseXML; ctx.status = ctx.xhr.status; ctx.statusText = ctx.xhr.statusText; } this.xhr.open(method, url, async, username, password); this.xhr.onload = function(evt) { if (ctx.onload) { setProps(); if (ctx.xhr.readyState === 4) { applyInterceptors(); } return ctx.onload(evt); } }; this.xhr.onreadystatechange = function (evt) { if (ctx.onreadystatechange) { setProps(); if (ctx.xhr.readyState === 4) { applyInterceptors(); } return ctx.onreadystatechange(evt); } }; }; XHRProxy.prototype.addEventListener = function(event, fn) { return this.xhr.addEventListener(event, fn); }; XHRProxy.prototype.send = function(data) { return this.xhr.send(data); }; XHRProxy.prototype.abort = function() { return this.xhr.abort(); }; XHRProxy.prototype.getAllResponseHeaders = function() { return this.xhr.getAllResponseHeaders(); }; XHRProxy.prototype.getResponseHeader = function(header) { return this.xhr.getResponseHeader(header); }; XHRProxy.prototype.setRequestHeader = function(header, value) { return this.xhr.setRequestHeader(header, value); }; XHRProxy.prototype.overrideMimeType = function(mimetype) { return this.xhr.overrideMimeType(mimetype); }; XHRProxy.interceptors = []; XHRProxy.addInterceptor = function(fn) { this.interceptors.push(fn); }; window.XMLHttpRequest = XHRProxy; XHRProxy.addInterceptor(function(method, url, responseText, status) { console.log( url ); debugger if (url.endsWith('.html') || url.endsWith('.htm')) { return "<!-- HTML! -->" + responseText; } else { return responseText; } }); })(window); */ (function() { let oldXHROpen = window.XMLHttpRequest.prototype.open; window.XMLHttpRequest.prototype.open = function(method, url, async, user, password) { // do something with the method, url and etc. this.addEventListener('load', function() { // do something with the response text // console.log('load: ' + this.responseText); try { this.xhr = JSON.parse( this.response ) if ( this.xhr.items_limited ) { delete this.xhr.items_limited; } /* if ( this.xhr.is_plus == false ) { this.xhr.is_plus = true this.xhr.payment_group="PLUS" } */ Object.defineProperty(this, 'responseText', { writable: true }); this.responseText = JSON.stringify( this.xhr ) debugger } catch (e) { } }); return oldXHROpen.apply(this, arguments); } })(); /* (function(open) { XMLHttpRequest.prototype.open = function() { this.addEventListener("readystatechange", function() { console.log(this.readyState); if (this.readyState==4) { try { this.xhr = JSON.parse( this.response ) this.xhr.is_plus = true this.xhr.items_limited = 0 debugger this.responseText = JSON.stringify( this.xhr ) } catch (e) { } } }, false); open.apply(this, arguments); }; })( XMLHttpRequest.prototype.open ); */