考试宝答题界面优化

优化考试宝答题界面UI,增加按键绑定

目前为 2023-06-26 提交的版本。查看 最新版本

// ==UserScript==
// @name        考试宝答题界面优化
// @namespace   https://github.com/AliubYiero/TemperScripts
// @version     1.1.5
// @description 优化考试宝答题界面UI,增加按键绑定
// @author      Yiero
// @match       https://www.zaixiankaoshi.com/online/*
// @match       https://www.zaixiankaoshi.com/mnks/*
// @icon        https://www.zaixiankaoshi.com/favicon.ico
// @license     GPL
// @grant       GM_addStyle
// ==/UserScript==


"use strict";
GM_addStyle(`
	.app-main {
		display: flex;
		justify-content: center;
		align-items: center;
		padding: 0;
	}
	
	.middle-container {
		padding: 10px ${16 + 19 + 16 + 10}px;
		border-radius: 10px;
	}
	
	.vip-quanyi,
	.new-footer,
	.header,
	.answer-box-detail,
	.answer-box-detail,
	.vip-tips {
		display: none;
	}
	
`);
window.onload = () => {
    setTimeout(() => {
        class SubmitAnswerStatusChange {
            static isSubmit = false;
            static submit() {
                this.isSubmit = true;
            }
            static close() {
                this.isSubmit = false;
            }
            static fresh() {
                this.close();
            }
        }
        class OptionObserver extends MutationObserver {
            constructor(Node, callback) {
                super(callback);
                super.observe(Node, {
                    childList: true
                });
            }
        }
        function isAnswerUI() {
            const localURL = document.URL.split('/');
            console.log(localURL[localURL.length - 2]);
            if (['online', 'simulation'].indexOf(localURL[localURL.length - 2]) === -1) {
                console.log('非答题界面,已退出');
                return;
            }
        }
        function freshOption() {
            new OptionObserver(document.querySelector('.qusetion-box'), e => {
                console.log('Change question');
                SubmitAnswerStatusChange.close();
            });
        }
        let optionList;
        function getOptions() {
            optionList = document.querySelectorAll('.options-w > .option');
            try {
                new OptionObserver(document.querySelector('.top-hd'), e => {
                    console.log(e);
                    new OptionObserver(document.querySelector('.options-w'), e => {
                        console.log('Fresh Options: ');
                        optionList = document.querySelectorAll('.options-w > .option');
                    });
                });
            }
            catch (e) {
                location.reload();
            }
        }
        function bindKeyboardEvent() {
            window.addEventListener('keydown', e => {
                console.log(e);
                const chosenOptionNumber = parseInt(e.key) - 1;
                if (chosenOptionNumber >= 0 && chosenOptionNumber < optionList.length) {
                    optionList[chosenOptionNumber]?.click();
                    return;
                }
                const submitAnswer = document.querySelectorAll('.topic [style="clear: both;"]');
                if (submitAnswer.length === 2 && !SubmitAnswerStatusChange.isSubmit && ['Enter'].indexOf(e.key) !== -1) {
                    SubmitAnswerStatusChange.submit();
                    submitAnswer[0].querySelector('button').click();
                    return;
                }
                SubmitAnswerStatusChange.fresh();
                if (['ArrowLeft'].indexOf(e.key) !== -1 || ['NumpadSubtract'].indexOf(e.code) !== -1) {
                    document.querySelector('.next-preve > button:nth-of-type(1)').click();
                }
                else if (['Enter', '+', 'ArrowRight'].indexOf(e.key) !== -1) {
                    document.querySelector('.next-preve > button:nth-of-type(2)').click();
                }
            });
        }
        const fnList = [isAnswerUI, freshOption, getOptions, bindKeyboardEvent];
        while (fnList.length) {
            (fnList.shift())();
        }
    }, 1000);
};

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址