样式调整粉笔

2025/3/13 09:35:25

// ==UserScript==
// @name        样式调整粉笔
// @namespace   Violentmonkey Scripts
// @match       https://spa.fenbi.com/ti/exam/solution/1_3e_201smaa*
// @grant       none
// @version     1.0.0.4
// @match        *://spa.fenbi.com/ti/exam/solution*
// @author      lhy
// @description 2025/3/13 09:35:25
// ==/UserScript==

// 通过创建 <style> 标签添加 CSS
// ==UserScript==
// @name        New script textdb.online
// @namespace   Violentmonkey Scripts
// @match        *://www.fenbi.com/*
// @match        *://spa.fenbi.com/*
// @grant       none
// @version     1.0
// @author      -
// @description 2025/3/24 14:48:29
// ==/UserScript==


// 通过创建 <style> 标签添加 CSS
const style = document.createElement('style');
style.textContent = `
  @import url('https://unpkg.com/[email protected]/dist/antd.min.css');
`;
document.head.appendChild(style);

// 加载 Babel
const babelScript = document.createElement('script');
babelScript.src = 'https://unpkg.com/@babel/standalone/babel.min.js';
document.head.appendChild(babelScript);

// 加载 React 和 ReactDOM
const reactScript = document.createElement('script');
reactScript.src = 'https://unpkg.com/[email protected]/umd/react.production.min.js';
document.head.appendChild(reactScript);

const reactDOMScript = document.createElement('script');
reactDOMScript.src = 'https://unpkg.com/[email protected]/umd/react-dom.production.min.js';
document.head.appendChild(reactDOMScript);

// 加载 Ant Design
const antdScript = document.createElement('script');
antdScript.src = 'https://unpkg.com/[email protected]/dist/antd.min.js';
document.head.appendChild(antdScript);

// 等待所有脚本加载完成
const waitForScripts = () => {
    return new Promise((resolve) => {
        const check = () => {
            if (window.React && window.ReactDOM && window.antd && window.Babel) {
                resolve();
            } else {
                setTimeout(check, 300);
            }
        };
        check();
    });
};

waitForScripts().then(() => {
    setTimeout(() => {
        main()
    }, 5000)
});

function main() {
    const { React, ReactDOM } = window;
    const { Drawer, Modal ,Input,message,Space,Button,notification} = window.antd;
    const { useState, useEffect } = React;
    const Babel = window.Babel;

    // 创建一个简单的 React 应用
    const appCode = `
        const App = () => {

            const [modalVisible, setModalVisible] = useState(true);

            const next = () => {
                handle();
                message.success('执行成功!');
                setModalVisible(false);
                notification.open({
                message: '样式调整完毕!',
                description:
                    '删除vip视频区域,调整资料分析布局自上而下全展开,全展开所有解析',
                onClick: () => {
                    console.log('Notification Clicked!');
                },
                });
                        }

                        async function handle() {
            await delVIPGuanggao();
            await openAnswer();
            await delNote();
            await ziliaofenxiDivOpen();
            await delPadding()
            console.log("执行完毕");
            }

            // 封装删除元素的函数
            function removeElements(selector) {
            const elements = document.querySelectorAll(selector);
            elements.forEach((element) => {
                if (element.parentNode) {
                element.parentNode.removeChild(element);
                }
            });
            }

            // 封装移除样式属性的函数
            function removeStyleProperties(selector, properties) {
            const elements = document.querySelectorAll(selector);
            elements.forEach((element) => {
                properties.forEach((property) => {
                element.style.removeProperty(property);
                });
            });
            }

            // 封装设置样式属性的函数
            function setStyleProperties(selector, property, value) {
            const elements = document.querySelectorAll(selector);
            elements.forEach((element) => {
                element.style[property] = value;
            });
            }

            function delVIPGuanggao() {
            removeElements('.solution-video-container, .solution-title-container');
            }

            function openAnswer() {
            removeStyleProperties('.result-common-container', ['height']);
            }

            function delNote() {
            removeElements('[id^="section-note-"]');
            }

            function ziliaofenxiDivOpen() {
            removeStyleProperties('.resizable-container', ['height']);
            setStyleProperties('.resizable-container', 'flexDirection', 'column');
            removeStyleProperties('.nz-resizable.left', ['width', 'height']);
            removeElements('.questions-anchors');
            }

            function delPadding(){
            const solutionMainElements = document.querySelectorAll('.solution-main');
                    solutionMainElements.forEach((element) => {
                        element.style.padding = '0';
                        element.style.maxWidth = 'none';
                    });
            }



            return (

                    <Modal title="请输唯一标识" open={modalVisible} onOk={next} onCancel={() => setModalVisible(false)}>
                        <div>是否执行脚本</div>
                    </Modal>
            );
        };

        let footerElement = document.getElementById('main');
        if (!footerElement) {
            footerElement = document.createElement('div');
            footerElement.id = 'main';
            document.body.appendChild(footerElement);
        }

        // 渲染 React 应用
        ReactDOM.render(<App />, footerElement);
    `;

    try {
        const compiledCode = Babel.transform(appCode, { presets: ['react'] }).code;
        new Function('React', 'ReactDOM', 'Drawer', 'Modal','Input','message', 'useState', 'useEffect','Space','Button','notification', compiledCode)(
            React,
            ReactDOM,
            Drawer,
            Modal,
            Input,
          message,
            useState,
            useEffect,
          Space,
          Button,
          notification,
        );
    } catch (error) {
        console.error('Babel 编译出错:', error);
    }
}