菁优组卷与试卷打印处理程序

【2024/10/22 更新版】自动处理菁优个人组卷与试卷界面,使其能够直接打印

安裝腳本?
作者推薦腳本

您可能也會喜歡 菁优网解除复制和右键限制工具

安裝腳本

您需要先安裝使用者腳本管理器擴展,如 TampermonkeyGreasemonkeyViolentmonkey 之後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyViolentmonkey 後才能安裝該腳本。

您需要先安裝使用者腳本管理器擴充功能,如 TampermonkeyUserscripts 後才能安裝該腳本。

你需要先安裝一款使用者腳本管理器擴展,比如 Tampermonkey,才能安裝此腳本

您需要先安裝使用者腳本管理器擴充功能後才能安裝該腳本。

(我已經安裝了使用者腳本管理器,讓我安裝!)

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展,比如 Stylus,才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

你需要先安裝一款使用者樣式管理器擴展後才能安裝此樣式

(我已經安裝了使用者樣式管理器,讓我安裝!)

// ==UserScript==
// @name         菁优组卷与试卷打印处理程序
// @version      0.11
// @namespace    https://codezhangborui.github.io
// @description  【2024/10/22 更新版】自动处理菁优个人组卷与试卷界面,使其能够直接打印
// @author       CodeZhangBorui
// @match        http://www.jyeoo.com/*/paper/detail/*
// @match        https://www.jyeoo.com/*/paper/detail/*
// @match        http://www.jyeoo.com/*/report/detail/*
// @match        https://www.jyeoo.com/*/report/detail/*
// @icon         https://www.jyeoo.com/favicon.ico
// @grant        GM_registerMenuCommand
// @grant        GM_notification
// @homepage     https://github.io/CodeZhangBorui/Jyeoo-Print-Processer
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';
    var username = document.querySelector("div.profile-name").children[0].children[0].innerHTML;
    console.log("%c菁优组卷打印处理程序 %cBy CodeZhangBorui Version 0.11\n%c菁优网用户 %s,欢迎您使用本脚本", 'font-size: large; font-family: "微软雅黑"', 'font-size: large; font-family: "Consolas"', 'font-size: large; font-family: "微软雅黑"', username);
    GM_registerMenuCommand("处理后自动刷新", () => {
        if (localStorage.getItem("EnableAutoRefresh") == 'N'){
            localStorage.setItem("EnableAutoRefresh", 'Y');
            GM_notification("处理后自动刷新:已开启");
        } else {
            localStorage.setItem("EnableAutoRefresh", 'N');
            GM_notification("处理后自动刷新:已关闭");
        }
    })
    if(localStorage.getItem("EnableAutoRefresh") == null) {
        localStorage.setItem("EnableAutoRefresh", 'Y');
        function FirstUseSettingsStep1() {
            showConfirm('请完成脚本设置:是否要在完成处理后自动刷新?<br/>默认值:是。注意:Safari 请填写 N', ['是', function(){
                localStorage.setItem("EnableAutoRefresh", 'Y');
                showMessage('设置成功!');
                showProcess('脚本设置就绪,请点击右侧“立即处理并打印”按钮执行。');
                closeBox(this);
            }], ['否', function(){
                localStorage.setItem("EnableAutoRefresh", 'N');
                showMessage('设置成功!');
                showProcess('脚本设置就绪,请点击右侧“立即处理并打印”按钮执行。');
                closeBox(this);
            }], 0);
        }
        FirstUseSettingsStep1();
    }
    console.log("🔹 创建按钮对象...");
    var tipP = document.createElement('p');
    tipP.innerText = "----- 菁优组卷与试卷打印处理程序 -----";
    var processButton = document.createElement('span');
    processButton.innerHTML = `<a href="javascript:void(0)" style="width:130px;" class="mr15"><i class="icon i-paper-07"></i><em class="m5 vm">立即处理并打印</em></a>`;
    processButton.onclick = function() {
        /*
         * 打印完成后自动刷新:true/false
         */
        var EnableAutoRefresh = localStorage.getItem("EnableAutoRefresh")=='Y'?true:false;
        function deleteElementByClassName(ClassName) {
            while(1) {
                var obj = document.getElementsByClassName(ClassName)[0];
                if(obj == undefined) {
                    return;
                }
                obj.remove();
            }
        }
        function deleteElementById(Id) {
            var obj = document.getElementById(Id);
            if(obj == undefined) {
                return;
            }
            obj.remove();
        }
        function removeBorderByClassName(ClassName) {
            var obj = document.getElementsByClassName(ClassName);
            for(var i = 0; i < obj.length; i++) {
                obj[i].setAttribute('style', 'border: none;');
            }
        }
        //获取提示用信息
        var papertitle = document.getElementsByClassName('paper-title')[0].innerText;
        var subject = document.getElementsByClassName('nav-subject')[0].innerText;
        //外部框架
        deleteElementByClassName('top');
        deleteElementById('borwserWarning');
        deleteElementByClassName('brower-tip');
        deleteElementByClassName('header');
        deleteElementById('divNav')
        deleteElementByClassName('clear');
        deleteElementByClassName('foot');
        deleteElementByClassName('fixed-bottom');
        deleteElementById('divMsg');
        deleteElementByClassName('return-top');
        deleteElementByClassName('paper-tab-ctrl');
        deleteElementByClassName('paper-side-2024');
        deleteElementByClassName('divReportCart');
        //Content里内容
        deleteElementById('divBread');
        deleteElementByClassName('fright');
        deleteElementByClassName('h2-txt');
        //删除所有fieldtip
        deleteElementByClassName('fieldtip');
        //去除每道题外面的边框
        removeBorderByClassName('QUES_LI');
        //通知并打印
        console.log("✅ 处理成功!");
        GM_notification(subject + '| ' + papertitle, "✅ 试卷处理成功!");
        window.print();
        //自动刷新
        if(EnableAutoRefresh) {
            window.location.reload();
        }
    }
    var settingsButton = document.createElement('span');
    settingsButton.innerHTML = `<a href="javascript:void(0)" style="width:90px;" class="mr15"><i class="icon i-paper-12"></i><em class="m5 vm">脚本设置</em></a>`;
    settingsButton.onclick = function() {
        showConfirm('设置项1:是否要在完成处理后自动刷新?<br/>默认值:是。注意:Safari 请填写 N', ['是', function(){
            localStorage.setItem("EnableAutoRefresh", 'Y');
            showMessage('设置成功!');
            closeBox(this);
        }], ['否', function(){
            localStorage.setItem("EnableAutoRefresh", 'N');
            showMessage('设置成功!');
            closeBox(this);
        }], 0);
    }
    console.log("🔹 查找将要添加的位置...");
    var willAppendPlace = document.querySelector("div.mb15.bg-fff.pv15");
    if(willAppendPlace == undefined) {
        console.error("❌ 无法找到将要添加的位置 Element:'div.mb15.bg-fff.pv15',程序现在将停止");
        showMessage('❌ 出错了<br/>脚本无法找到将要添加的位置 Element: div.mb15.bg-fff.pv15,程序现在将停止。请联系脚本作者更新!', false);
    } else {
        willAppendPlace.appendChild(tipP);
        willAppendPlace.appendChild(processButton);
        willAppendPlace.appendChild(settingsButton);
        console.log("✅ 程序已就绪!");
    }
})();