Bu script direkt olarak kurulamaz. Başka scriptler için bir kütüphanedir ve meta yönergeleri içerir // @require https://update.greasyfork.org/scripts/435697/1061227/myUtils.js
// ==UserScript==
// @name myUtils
// @description 自分用、dom取得等の機能追加。
// @include *
// @noframes
// ==/UserScript==
window.my=new class {
constructor(){
Element.prototype.on=function(){
addEventListener.apply(this,arguments);
return this
}
const e=document.head.nextElementSibling;
if(e.hasAttribute('my-zone')) this.zone=e;
else{
const z=document.createElement('div');
z.setAttribute('my-zone','');
document.head.after(z);
this.zone=z
}
}
//dependency:after,zone
addStyle(css,className=void(0)){
this.append('style',this.zone,css,`class`,className)
}
append(tag,dom,content){
if(!tag) return;
const son=typeof tag==='string'?
document.createElement(tag):tag instanceof HTMLElement||tag instanceof DocumentFragment?
tag:void(0);
let len=arguments.length;
if(dom instanceof HTMLElement||dom instanceof DocumentFragment)dom.append(son);
if(content)son.append(content);
while(len>3){
son.setAttribute([arguments[len-2]],arguments[len-1]);len-=2
}return son;
}
//my.append('tag',document.body,'content','idk','true','data-s')
after(tag,dom,content){
if(!tag) return;
const bro=typeof tag==='string'?
document.createElement(tag):tag instanceof HTMLElement||tag instanceof DocumentFragment?
tag:void(0);
let len=arguments.length;
if(dom instanceof HTMLElement||dom instanceof DocumentFragment)dom.after(bro);
if(content)bro.append(content);
while(len>3){
bro.setAttribute([arguments[len-2]],arguments[len-1]);len-=2
}return bro;
}
//my.after('div',document.body,'','suck','1','dick',000)
before(tag,dom,content){
if(!tag) return;
const bro=typeof tag=='string'?
document.createElement(tag):tag instanceof HTMLElement||tag instanceof DocumentFragment?
tag:void(0);
let len=arguments.length;
if(dom instanceof HTMLElement||dom instanceof DocumentFragment)dom.before(bro);
if(content)bro.append(content);
while(len>3){
bro.setAttribute([arguments[len-2]],arguments[len-1]);len-=2
}return bro;
}
// my.before('div',document.head,'','suck','1','dick')
//enable or disable style with class
switchStyle(...styleClassStrs){
styleClassStrs.forEach(e=>{
this.zone.querySelectorAll('style.'+e).forEach(e=>{
e.type!='0'?e.type=0:e.type="";
});
})
}
seconds2date(seconds){
const date=new Date(seconds),year=date.getFullYear(),month=date.getMonth()+1,day=date.getDate(),
hour=date.getHours(),minute=date.getMinutes(),second=date.getSeconds(),milliseconds=date.getMilliseconds(),currentTime=year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second+":"+milliseconds;
return currentTime
}
//my.seconds2date(new Date().getTime())
//跳出登录框后再执行
fuckTiebaLogin(userName,password){
document.getElementById('TANGRAM__PSP_5__footerULoginBtn').click();
document.getElementById('TANGRAM__PSP_5__userName').outerHTML+='';
document.getElementById('TANGRAM__PSP_5__password').outerHTML+='';
document.getElementById('TANGRAM__PSP_5__userName').value=userName;
document.getElementById('TANGRAM__PSP_5__password').value=password;
return document.getElementById('TANGRAM__PSP_5__submit').click();
}
getValue(k,aDefault){
const val=localStorage.getItem("XB_"+k)
if (!val && 'undefined' != typeof aDefault) return aDefault;
return val;
}
setValue(k, v){
localStorage.setItem("XB_"+k, v);
}
//setValue('k', 'v')
deleteValue(k){
if(k.indexOf("XB_")!=-1) localStorage.removeItem(k);
}
//deleteValue('k')
listValues(){
let list=[],j=0,k,l=localStorage.length;
for (let i=0;i<l;i++) {
k=localStorage.key(i);
if(k.indexOf("XB_")!=-1) list[j++]=localStorage.key(i)
}return list
}
//dependency:listValues
clearValues(){
this.listValues().forEach(e=>{
localStorage.removeItem(e)
})
}
//get len of json obj
getJsonLen(jsonObj){
let jsonLen=0, key;
for (key in jsonObj) {
if (jsonObj.hasOwnProperty(key)) jsonLen++;
}return jsonLen;
}
//syn console.log
log(text){
console.log(JSON.stringify(text))
}
//dependency:addStyle,append
addBtns(...params){
const z=this.zone,myDiv=z.querySelector('#my-btn-container')||this.append('div',z,'',`id`,'my-btn-container',`class`,void(0)),btns=[],l=params.length;
if(!z.querySelector('style.my-css'))this.addStyle(`#my-btn-container{display:flex;flex-wrap:wrap;z-index:1650729359811;position: fixed!important;right:0;top:0}.my-btn{user-select: none!important}`,'my-css undefined');
for(let i=0;i<l;){
const btn=typeof params[i]==="function"?
this.append('button',myDiv,params[i].name+'|','class','my-btn').on('click',params[i++]):
this.append('button',myDiv,params[i++]+'|','class','my-btn').on('click',params[i++]);
btns[btns.length]=btn
}return btns
}
//my.addBtns(()=>{},"func1",e=>{confirm(e.target.id)},function(e){prompt(e.target.outerHTML)},function test(e){return 1})
//dependency:addStyle,append
addAs(...args){
const z=this.zone,myDiv=z.querySelector('#my-btn-container')||this.append('div',document.body,'',`id`,'my-btn-container',`class`,void(0));
if(!z.querySelector('style.my-css')) this.addStyle(`#my-btn-container{display:flex;flex-wrap:wrap;z-index:1650729359811;position: fixed!important;right:0;top:0}.my-btn{user-select: none!important}`,'my-css undefined');
for(let i=0;i<args.length;i+=2){
this.append('a',myDiv,args[i]+'|',`href`,args[i+1]);
}
}
//my.addAs("哔哩哔哩","https://www.bilibili.com/","百度","https://www.baidu.com/")
//prevent document.title from being changed
fixTitle(){
Object.defineProperty(document,"title",{
writable:false
})
}
}