unipus iTEST助手

解除考试复制粘贴划词限制, 内置听力播放器无限听材料

目前为 2020-06-03 提交的版本。查看 最新版本

// ==UserScript==
// @name         unipus iTEST助手
// @namespace    http://blog.z31.xyz/
// @version      1.1
// @description  解除考试复制粘贴划词限制, 内置听力播放器无限听材料
// @author       simonkimi
// @match        https://itestcloud.unipus.cn/itest-api/itest/s/answer/**
// @grant        none
// ==/UserScript==


(async () => {
    'use strict';
    while (true) {
        await delay(500);
        if (document.getElementsByClassName('itest-ques').length !== 0) {
            break;
        }
    }
    hackClass('itest-ques');
    hackClass('itest-direction');
    hackItem(document.body);
    initFloatTable();
})();

function hackClass(className) {
    for (const i of document.getElementsByClassName(className)) {
        hackItem(i);
    }
}


function hackItem(item) {
    item.onpaste = () => true;
    item.oncontextmenu = () => true;
    item.onselectstart = () => true;
    item.ondragstart = () => true;
    item.oncopy = () => true;
    item.onbeforecopy = () => true;
    item.style = '';
}

async function delay(time) {
    return new Promise(resolve => {
        setTimeout(resolve, time)
    })
}



function findListenUrl() {
    console.log("点击下一页");
    const $quesSet = $('.itest-ques-set');
    let hasFind = false;
    $quesSet.each(function () {
        const $this = $(this);
        if ($this.css('display') === 'block' && $this.parent().css('display') === 'block') {

            const $urlNode = $this.find('.itest-hear-reslist');
            if ($urlNode.length !== 0) {
                const mp3List = JSON.parse($urlNode.html());
                if (mp3List.length !== 0) {
                    hasFind = true;
                    const $skFloat = $('#sk-container');
                    $skFloat.empty();
                    let index = 1;
                    for (const url of mp3List) {
                        console.log(url);
                        if (url.indexOf('http') !== -1) {
                            $skFloat.append(`<a class="sk-audio-href" href="javascript:;" data-href="${url}">第${index}段</a><br>`);
                            index += 1;
                        }
                    }

                    $('.sk-audio-href').each(function () {
                        const $href = $(this);
                        $href.on('click', function () {
                            const audio = document.getElementById('sk-audio');
                            audio.src = $href.attr('data-href');
                            audio.currentTime = 0;
                            audio.play();
                        })
                    });
                    return false;
                }
            }

        }
    });
    $('.sk-float').css('display', hasFind? 'block': 'none')
}

function initFloatTable() {
    const styleNode = document.createElement("style");
    styleNode.innerHTML = `
        .sk-float {
            left: 10px;
            bottom: 10px;
            background: #1a59b7;
            color: #ffffff;
            overflow: hidden;
            z-index: 9999;
            position: fixed;
            padding: 5px;
            text-align: center;
            width: 175px;
            border-radius: 4px;
            display: none;
        }
        
        .sk-play {
            margin: 5px 0;
        }

        .sk-play a {
            color: white;
            font-size: 12px;
            text-decoration: none;
        }

        #sk-container a {
            color: white;
            text-decoration: none;
        }

        .sk-float p {
            margin: 5px 0;
        }
    `;
    document.head.appendChild(styleNode);
    $('body').append(`
        <div class="sk-float">
            <audio id="sk-audio"></audio>
            <p>听力材料</p>
            <div id="sk-container">
            </div>
            <div class="sk-play">
                <a href="javascript:void(0)" onclick="document.getElementById('sk-audio').play()">播放</a>
                <a href="javascript:void(0)" onclick="document.getElementById('sk-audio').pause()">暂停</a>
                <a href="javascript:void(0)" onclick="document.getElementById('sk-audio').currentTime = 0; document.getElementById('sk-audio').pause()">停止</a>
            </div>
        </div>
    `);
    $('.goup').on('click', function () {
        setTimeout(findListenUrl, 500);
    });
    $('.goto').on('click', function () {
        setTimeout(findListenUrl, 500);
    });
}

QingJ © 2025

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