🏠 Home 

MSCSTSTS-TOOLS

自用工具库,命名空间mscststs

Этот скрипт недоступен для установки пользователем. Он является библиотекой, которая подключается к другим скриптам мета-ключом // @require https://update.greasyfork.org/scripts/38220/1026406/MSCSTSTS-TOOLS.js

var mscststs = new class {
sleep(miliseconds) {
return new Promise(resolve => {
setTimeout(() => { resolve(); }, miliseconds);
});
}
async _Step(selector, callback, need_content, timeout) {
while (timeout--) {
if (document.querySelector(selector) === null) {
await this.sleep(100);
continue;
} else {
if (need_content) {
if (document.querySelector(selector).innerText.length == 0) {
await this.sleep(100);
continue;
}
}
}
break;
}
callback(selector);
}
wait(selector, need_content = false, timeout = Infinity) {
return new Promise(resolve => {
this._Step(selector, function (selector) { resolve(document.querySelector(selector)); }, need_content, timeout);
});
}
hijackXMLHttpRequest(options, selfWindow = self) {
const rawXHR = selfWindow.XMLHttpRequest;
selfWindow.XMLHttpRequest = function (...args) {
const xhrInstance = new rawXHR(...args);
// 下面将 xhrInstance 添加
const xhrProxy = new Proxy(xhrInstance, {
get: function (target, property) {
if (typeof target[property] === "function") {
return function (...args) {
const before = options['before' + property] || ((...args) => { return args });
const after = options['after' + property] || (_=>_);
return after(target[property](...before(...args)));
//return target[property](...args)
}
} else {
return target[property]
}
}
});
return xhrProxy;
}
return function abort() {
selfWindow.XMLHttpRequest = rawXHR;
}
}
}();