Browser Plugins

42 阅读1分钟

MDN转中文

var switchBtn = document.querySelector('#languages-switcher-button');
switchBtn && switchBtn.click();
domReady('.languages-switcher-menu .language-menu', start);
async function start() {
  var zhBtn = document.querySelector('.languages-switcher-menu .language-menu .submenu-item[data-locale="zh-CN"]');
  if (zhBtn) {
    Dreamer.success('切换到中文', 1000);
    zhBtn.click();
  }
};
async function delay(time) {
    return new Promise((res) => {
        setTimeout(() => {
            console.log(`延迟${time}ms`);
            res();
        }, time);
    });
}

swaggerAPI在线文档一键复制

Dreamer.success('开启一键复制', 1000);
document.addEventListener('click', (e) => {
  console.log(e);
  const target = e.target;
  let methodDom = null;
  let pathDom = null;
  if (target.className.endsWith('-api-summary')) {
    methodDom = target.children[0];
    pathDom = target.children[1];
  } else if (target.className.endsWith('-api-summary-path')) {
    methodDom = target.previousElementSibling;
    pathDom = target;
  };
  if (methodDom && pathDom) {
    const path = pathDom.innerText.trim();
    let pathArr = path.replace(/^\/|(app-api|public|adm)\/+/g, '').split(/\/|-/);
    let name1 = pathArr.splice(0, 1);
		let nameArr = [name1, ...pathArr.map(d => d.replace(/^\S/, s => s.toUpperCase())), 'Api'];
    let method= methodDom.innerText.trim();
    const isGet = method === 'GET';
    let dataKey = isGet ? '{ params }' : 'data';
    let des = document.querySelector("#app > div > section > section > div > div.ant-tabs-content.ant-tabs-content-no-animated.ant-tabs-top-content.ant-tabs-card-content > div.ant-tabs-tabpane.ant-tabs-tabpane-active > main > div > div > div.ant-tabs-content.ant-tabs-content-animated.ant-tabs-left-content > div.ant-tabs-tabpane.ant-tabs-tabpane-active > div.document > div.ant-row > div.ant-row > div.ant-col.ant-col-18 > span").innerText.trim();
    let copyValue = `
// ${des}
export const ${nameArr.join('')} = (${isGet ? 'params' : 'data'}) => {
  return request.${method.toLowerCase()}('${path}', ${dataKey});
};
`;
    GM_setClipboard(copyValue);
    Dreamer.success('复制成功', 500);
    console.log(method, path, des);
  }
});

vantUI复制自定义CSS变量

unsafeWindow = unsafeWindow || window;
const valReg = /--van-.*-/;
unsafeWindow.addEventListener('copy', async () => {
  let textValue = await navigator.clipboard.readText();
  // 开启小程序转换
  //if (menu_ALL[0][2] && valReg.test(textValue)) {
    textValue = textValue.replace(/^--van-/, '');
    const keyArr = textValue.split('-');
		var nameArr = [keyArr[0], ...keyArr.splice(1).map(d => d.replace(/^\S/, s => s.toUpperCase()))];
		textValue = nameArr.join('');
 // }
  // 删除之前替换后留下的一些空行
  textValue = textValue.replace(/^\s*$[\r\n]*|^[^\S\r\n]+|[^\S\r\n]+$|([^\S\r\n]){2,}|\s+$(?![^])/gm, '');
  GM_setClipboard(textValue);
  Dreamer.success('复制成功', 500);
});

根据点击的元素,动态生成对应的CSS并生效

// ==UserScript==
(function() {
  let highlightNode = loadStyle('');
  let themeNode = loadStyle('');
  document.body.addEventListener('click', (e) => {
    console.log('e.target.className: ', e.target.className);
    let node = null;
    if (e.target.className === 'bytemd-dropdown-item-title') {
      node = e.target.parentNode;
    } else if (e.target.className === 'bytemd-dropdown-item') {
      node = e.target;
    } else {
      return;
    }
    let attrValue = node.getAttribute('bytemd-tippy-path');
    switch (attrValue.slice(0, 2)) {
      case '18':
        setStyle(highlightNode, attrValue);
        break;
      case '19':
        setStyle(themeNode, attrValue);
        break;
      default:
        break;
    }
  })

  function loadStyle() {
    let styleNode = document.createElement('style');
    styleNode.setAttribute('type', 'text/css');
    let head = document.querySelector('head');
    head.appendChild(styleNode);
    return styleNode;
  }

  function setStyle(styleNode, attrValue) {
    styleNode.innerHTML = `.bytemd-dropdown-item[bytemd-tippy-path='${attrValue}']{
      background: #bcc5cd;
    }`;
  }
})();