my

我的工具

当前为 2023-08-16 提交的版本,查看 最新版本

此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.cn-greasyfork.org/scripts/435697/1235901/my.js

  1. // ==UserScript==
  2. // @name my
  3. // @description 我的工具
  4. // @grant unsafeWindow
  5. // ==/UserScript==
  6. (function(win){
  7. const e=document.documentElement.firstElementChild;
  8. let z;
  9. win.my=new class {
  10. constructor(){
  11. if(e.tagName==='Z') z=this.zone=e;
  12. else {
  13. z=this.zone=this.before('z',e,'',`class`,'rwf');
  14. this.addStyle(`my-btns{display:block;z-index:9195129;position:fixed;right: 0;bottom: 0;height: min-content;}.my-btn{user-select: none}`,'my-btns');
  15. win.cl=win.console.log;win.al=win.alert;
  16. }
  17. }
  18.  
  19. addStyle(css,className='rwf'){//depend:after,zone
  20. return this.append('style',z,css,`class`,className);
  21. }
  22. append(tag,dom,content){
  23. if(!tag) return;
  24. const son=typeof tag==='string'?document.createElement(tag):tag instanceof EventTarget?tag:0;
  25. let len=arguments.length;
  26. if(dom instanceof EventTarget)dom.append(son);
  27. if(content)son.append(content);
  28. while(len>3){
  29. son.setAttribute([arguments[len-2]],arguments[len-1]);len-=2;
  30. }return son;
  31. }//my.append('tag',document.body,'content','idk','true','data-s')
  32. after(tag,dom,content){
  33. if(!tag) return;
  34. const bro=typeof tag==='string'?document.createElement(tag):tag instanceof EventTarget?tag:0;
  35. let len=arguments.length;
  36. if(dom instanceof EventTarget)dom.after(bro);
  37. if(content)bro.append(content);
  38. while(len>3){
  39. bro.setAttribute([arguments[len-2]],arguments[len-1]);len-=2;
  40. }return bro;
  41. }//my.after('div',document.body,'','suck','1','dick',000)
  42. before(tag,dom,content){
  43. if(!tag) return;
  44. const bro=typeof tag==='string'?
  45. document.createElement(tag):tag instanceof EventTarget?
  46. tag:0;
  47. let len=arguments.length;
  48. if(dom instanceof EventTarget)dom.before(bro);
  49. if(content)bro.append(content);
  50. while(len>3){
  51. bro.setAttribute([arguments[len-2]],arguments[len-1]);len-=2;
  52. }return bro;
  53. }// my.before('div',document.head,'','suck','1','dick')
  54.  
  55. eods(){//enable or disable style in my.zone
  56. z.querySelectorAll('style').forEach(e=>e.type==='0'?e.type='':e.type=0);
  57. }
  58. sohe(...args){//show or hide elements
  59. args.forEach(e=>{
  60. if(typeof e!=="string") e.style.display==='none'?e.style.display='initial':e.style.display='none';
  61. else document.querySelectorAll(e).forEach(e=>e.style.display==='none'?e.style.display='initial':e.style.display='none');
  62. });
  63. }
  64. s2d(seconds){//seconds2date
  65. const date=new Date(seconds),year=date.getFullYear(),month=date.getMonth()+1,day=date.getDate(),
  66. hour=date.getHours(),minute=date.getMinutes(),second=date.getSeconds(),milliseconds=date.getMilliseconds(),currentTime=year+"-"+month+"-"+day+" "+hour+":"+minute+":"+second+":"+milliseconds;
  67. return currentTime;
  68. }//my.s2d(new Date().getTime())
  69. tieba(uname,pwd){//login
  70. document.getElementById('TANGRAM__PSP_5__footerULoginBtn').click();
  71. document.getElementById('TANGRAM__PSP_5__uname').outerHTML+='';
  72. document.getElementById('TANGRAM__PSP_5__pwd').outerHTML+='';
  73. document.getElementById('TANGRAM__PSP_5__uname').value=uname;
  74. document.getElementById('TANGRAM__PSP_5__pwd').value=pwd;
  75. return document.getElementById('TANGRAM__PSP_5__submit').click();
  76. }
  77. fixTitle(){//stop title be changed
  78. Object.defineProperty(document,"title",{
  79. writable:false
  80. });
  81. }
  82.  
  83. addBtns(...params){//depend:addStyle,append
  84. const myBtns=z.querySelector('my-btns')||this.append('my-btns',z,'',`class`,'rwf'),btns=[],l=params.length;
  85. for(let i=0;i<l;i+=2){
  86. const btn= params[i]==''?this.append('button',myBtns,params[i+1].name+'|','class','my-btn'):this.append('button',myBtns,params[i]+'|','class','my-btn');
  87. btn.addEventListener('click',params[i+1]);
  88. btns[btns.length]=btn;
  89. }return btns;
  90. }//my.addBtns('',()=>{},"func1",e=>{confirm(e.target.id)},'f2',function(e){prompt(e.target.outerHTML)},function test(e){return 1})
  91. addAs(...args){//depend:addStyle,append
  92. const myBtns=z.querySelector('my-btns')||this.append('my-btns',z,'',`class`,'rwf');
  93. for(let i=0;i<args.length;i+=2){
  94. this.append('a',myBtns,args[i]+'|',`href`,args[i+1]);
  95. }
  96. }//my.addAs("bilibili","https://www.bilibili.com/","baidu","https://www.baidu.com/")
  97.  
  98. }()
  99. })(unsafeWindow);