您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Vanilla JS library
当前为
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.gf.qytechs.cn/scripts/369430/605186/vanilla-lib.js
- /* vanilla-lib */
- var mapFlat = ( array,func ) => array.map( x => func(x) ).reduce( (a,b) => a.concat(b) ),
- parenth = ( elem,nth ) => traverse(elem, ifndef(nth, 1), 0), //( ! elem ? null : elem.parentNode ),
- ifndef = ( expr,value ) => ( ndef(expr) ? value : expr ),
- ifnan = ( expr,value ) => ( isNaN(expr) ? value : expr ),
- isobj = expr => ( 'object' === typeof expr ),
- isarr = expr => ( isobj(expr) && Array === expr.constructor ),
- isfn = expr => ( 'function' === typeof expr ),
- ndef = expr => ( 'undefined' === typeof expr ),
- test = ( expr,func,other ) => ( !! expr ? func(expr) : isfn(other) ? other(expr) : other ),
- log = console.debug,
- on = ( elem,event,func ) => elem.addEventListener(event, func),
- $$ = ( sel,elem ) => Array.slice((elem || document).querySelectorAll(sel)),
- $ = ( sel,elem ) => (elem || document).querySelector(sel);
- var aggRate = ( amount,rate,periods ) => ( ! periods ? amount : aggRate(amount * rate, rate, periods - 1) ),
- toDec = expr => ( Math.round(parseFloat((expr +'').replace(/\$|,/g, '')) * 100) / 100 );
- //Array.prototype.mapFlat = function( func ) { return mapFlat(this, func); };
- function appendTo( element, parent, reference ) {
- if ( !! reference ) {
- parent = reference.parentNode;
- reference = reference.nextSibling;
- }
- if ( !! reference ) {
- return prependTo(element, parent, reference);
- } else if ( !! parent ) {
- parent.append(element);
- } else {
- console.warn('*** appendTo() could not add element: Neither a parent nor a reference element was provided');
- }
- return element;
- }
- function attr( elem, name, value ) {
- if ( isarr(elem) ) {
- return elem.map( el => attr(el, name, value) );
- }
- keysAndValues(name, value, ( n,v ) => ( null === v ? elem.removeAttribute(n) : elem.setAttribute(n, v) ) );
- return elem;
- }
- function create( html, containerType ) {
- let container = null,
- result = null,
- attrs, style;
- if ( isobj(containerType) ) {
- attrs = containerType.attrs;
- style = containerType.style;
- containerType = containerType.container;
- }
- containerType = containerType || 'div';
- create[ containerType ] =
- container = create[ containerType ] || document.createElement(containerType);
- container.innerHTML = html;
- result = Array.slice(container.childNodes)
- .map( elem => (elem.remove(), elem) );
- if ( !! attrs ) {
- attr(result, attrs);
- }
- if ( !! style ) {
- css(result, style);
- }
- if ( 1 == result.length ) {
- result = result[ 0 ];
- }
- return result;
- }
- function css( element, key, value ) {
- if ( isarr(element) ) {
- return element.map( el => keysAndValues(key, value, ( k,v ) => el.style[ k ] = v ) );
- }
- keysAndValues(key, value, ( k,v ) => element.style[ k ] = v );
- return element;
- }
- function keysAndValues( key, value, action ) {
- // Case 1: key is an object (and there is no value)
- if ( isobj(key) && ndef(value) ) {
- return Object.keys(key)
- .map( k => action(k, key[ k ]) );
- // Case 2: key is an array
- } else if ( isarr(key) ) {
- // Case 1.a: value is an array of the same length
- if ( isarr(value) && key.length === value.length ) {
- return key.map( ( k,i ) => action(k, value[ i ]) );
- // Case 1.b: value is considered a simple, plain value
- } else {
- return key.map( k => action(k, value) );
- }
- // Default Case: key and value considered as simple, plain values
- } else {
- return action(key, value);
- }
- }
- function prependTo( element, parent, reference ) {
- if ( ! reference && !! parent ) {
- reference = parent.childNodes[ 0 ];
- }
- if ( !! reference ) {
- reference.parentNode.insertBefore(element, reference);
- } else if ( !! parent ) {
- parent.append(element);
- } else {
- console.warn('*** prependTo() could not add element: Neither a parent nor a reference element was provided');
- }
- return element;
- }
- function toDec2( amount ) {
- amount = toDec(amount);
- if ( isNaN(amount) ) {
- return null;
- }
- let segs = (amount +'').split('.');
- return segs[ 0 ] +'.'+ ((segs[ 1 ] || 0) +'0').slice(0, 2);
- }
- function toMoney( amount ) {
- let dec2 = toDec2(amount);
- return ( isNaN(dec2) ? null : dec2 < 0 ? '-$ '+ (-dec2) : '$ '+ dec2 );
- }
- function traverse( elem, up, sideways, elementsOnly, lastIfNull ) {
- let last = elem;
- while ( !! elem && up -- > 0 ) elem = (last = elem, parenth(elem));
- let prop = ( elementsOnly ? 'Element' : '' ) +'Sibling';
- if ( sideways < 0 ) {
- while ( !! elem && sideways ++ < 0 ) elem = (last = elem, elem[ 'previous'+ prop ]);
- } else if ( sideways > 0 ) {
- while ( !! elem && sideways -- > 0 ) elem = (last = elem, elem[ 'next'+ prop ]);
- }
- return ( ! lastIfNull ? elem : elem || last );
- }
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址