您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
modao menu parser
- // ==UserScript==
- // @name Modao Menu Parser
- // @namespace http://tampermonkey.net/
- // @version 1.0.1
- // @description modao menu parser
- // @author 飞天小猪
- // @match http*://modao.cc/*
- // @icon https://gongjux.com/files/3/4453uhm5937m/32/favicon.ico
- // @grant none
- // @require https://gf.qytechs.cn/scripts/453166-jquery/code/jquery.js?version=1105525
- // @license MIT
- // ==/UserScript==
- // 判断modao版本
- function parserVersion() {
- return location.href.includes('proto')
- }
- // 解析函数
- function parser() {
- const res = parserVersion()
- !res && layer.load(2, {shade: [0.5, '#393D49']})
- // 1. 获取ul元素
- const liElArr = findUlElememt()
- // 2. 整理数据
- if (!liElArr) return res ? alert('解析失败!') :layer.msg('解析失败!')
- const nodeList = getNodeList(liElArr)
- const result = toContent(flattenTreeWithLevels(nodeList))
- // 3. 将整理好的数据复制到剪贴板
- copyTextToClipboard(result)
- !res && layer.closeAll('loading');
- }
- function findUlElememt() {
- const res = parserVersion()
- return res ? ($('ul').children().toArray() || undefined) : ($('ul[class*="iAsEgD"]').children().toArray() || undefined)
- }
- function getNodeList(li) {
- const arr = []
- li.forEach(i => {
- const temp = {}
- const children = Array.from(i.children)
- temp.name = children.find(j => j.className.includes('rn-list-item')).innerText
- const list = Array.from(children.find(j => j.className.includes('child-screens'))?.children || [])
- if (list.length) {
- temp.children = getNodeList(list)
- } else {
- temp.children = []
- }
- arr.push(temp)
- })
- return arr
- }
- function flattenTreeWithLevels(tree, levels = [], arr = []) {
- for (const node of tree) {
- const item = { ...levels };
- item[levels.length] = node.name;
- arr.push(item);
- if (node.children) {
- flattenTreeWithLevels(node.children, [...levels, node.name], arr);
- }
- }
- return arr;
- }
- function toContent(arr) {
- let str = ''
- const strArr = arr.map(i => {
- const itemArr = Object.values(i)
- return itemArr.join('\t')
- })
- str = strArr.join('\n')
- return str
- }
- async function copyTextToClipboard(text) {
- const res = parserVersion()
- if (navigator.clipboard && navigator.clipboard.writeText) {
- try {
- await navigator.clipboard.writeText(text);
- res ? alert('复制成功') :layer.msg('复制成功');
- return;
- } catch (err) {
- console.error('使用 Clipboard API 复制失败: ', err);
- }
- }
- // 如果 Clipboard API 不可用,尝试使用 execCommand 方法
- const textArea = document.createElement('textarea');
- document.body.appendChild(textArea);
- textArea.value = text;
- textArea.select();
- try {
- const successful = document.execCommand('copy');
- if (successful) {
- console.log('使用 execCommand 复制成功');
- } else {
- console.log('使用 execCommand 复制失败');
- }
- } catch (err) {
- console.error('使用 execCommand 复制失败: ', err);
- } finally {
- document.body.removeChild(textArea);
- }
- }
- (function() {
- 'use strict';
- function setButton() {
- // 创建一个新的button元素
- var button = document.createElement('button');
- button.textContent = '解析菜单'; // 设置按钮文字
- // 设置按钮的基本样式(包括固定定位与默认透明度)
- button.style.cssText = `
- position: fixed; /* 或者 absolute,取决于您的布局需求 */
- top: 88px; /* 举例位置,您可以自定义 */
- right: 10px; /* 举例位置,您可以自定义 */
- z-index: 999;
- background-color: #007bff;
- color: white;
- padding: 6px 12px;
- border: none;
- border-radius: 5px;
- cursor: pointer;
- opacity: 0.3;
- transition: opacity 0.3s ease;
- `;
- // 添加鼠标悬浮时的透明度变化
- button.addEventListener('mouseover', function () {
- this.style.opacity = 1;
- });
- // 添加鼠标离开时的透明度变化
- button.addEventListener('mouseout', function () {
- this.style.opacity = 0.3;
- });
- button.addEventListener('click', parser)
- // 将按钮添加到文档中
- document.body.appendChild(button);
- }
- function sleep(time) {
- return new Promise((resolve, reject) => {
- setTimeout(() => {
- resolve()
- }, time * 1000)
- })
- }
- async function init() {
- const res = parserVersion()
- if (res) {
- setButton()
- } else {
- $('head').append($('<link rel="stylesheet" href="https://www.layuicdn.com/layui/css/layui.css">')) // 名称:layui,版本:2.7.6,原始地址:https://www.layuicdn.com/#Layui
- if (typeof layer == 'undefined') {
- $('head').append('<script src="https://www.layuicdn.com/layer-v3.5.1/layer.js"></script>') // 名称:layer,版本:3.5.1,原始地址:https://www.layuicdn.com/#Layer
- }
- // 等待layer加载成功
- while (true) {
- const loadEl = document.getElementById('loading')
- const loadElStyle = loadEl && window.getComputedStyle(loadEl)
- if (typeof layer != 'undefined' && loadElStyle && loadElStyle.display === 'none') {
- break
- }
- await sleep(0.5)
- }
- setButton()
- }
- }
- init()
- })();
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址