Javascript function hook
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyfork.org/scripts/443030/1037826/Hookjs.js
// ==UserScript==
// @name Hook.js
// @namespace https://github.com/invobzvr
// @version 0.1
// @description Javascript function hook
// @author invobzvr
// @homepageURL https://github.com/invobzvr/invotoys.js/tree/main/hook.js
// @supportURL https://github.com/invobzvr/invotoys.js/issues
// @license GPL-3.0
// ==/UserScript==
(function () {
const ORI = {};
Function.prototype.hook = function (params) {
typeof params === 'function' && (params = {
scope: window,
before: params,
});
!params.scope && (params.scope = window);
const that = this,
name = that.name;
ORI[name] = that;
params.scope[name] = function () {
if (typeof params.before === 'function') {
const ret = params.before.apply(this, arguments);
if (ret !== undefined) {
return ret;
}
}
let val = that.apply(this, arguments);
if (typeof params.after === 'function') {
const ret = params.after.apply(this, [val, arguments]);
if (ret !== undefined) {
val = ret;
}
}
return val;
}
}
})();