Greasy Fork

Greasy Fork is available in English.

学习通阻止暂停播放

学习通

您需要先安装一个扩展,例如 篡改猴Greasemonkey暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴暴力猴,之后才能安装此脚本。

您需要先安装一个扩展,例如 篡改猴Userscripts ,之后才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。

您需要先安装用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

// ==UserScript==
// @name         学习通阻止暂停播放
// @namespace    https://hognbin.xyz/
// @version      0.4
// @description  学习通
// @author       宏斌
// @match        https://mooc1.chaoxing.com/mycourse/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=chaoxing.com
// @grant        none
// @license MIT
// ==/UserScript==

(function () {
    'use strict';
    var video;
    function stopPause() {
        video = document.querySelectorAll('iframe')[0].contentWindow.document.querySelectorAll('iframe')[0].contentWindow.document.querySelector('video');
        video.pause = () => {
            console.log('他想暂停播放');
        }
    }

    function handleMute() {
        video = document.querySelectorAll('iframe')[0].contentWindow.document.querySelectorAll('iframe')[0].contentWindow.document.querySelector('video');
        video.volume = 0;
    }

    const button = document.createElement('button');
    button.className = 'h_Bbutton';
    button.innerHTML = '阻止暂停播放';
    document.body.appendChild(button);
    Object.assign(button.style, {
        width: '120px',
    });
    const style = document.createElement('style');
    style.innerHTML = `
        .h_Bbutton{
            transition: all 0.3s linear;
            position: fixed;
            padding: 10px;
            border: none;
            background: linear-gradient(45deg, #0219f2, #c804ea);
            color: #fffae5;
            border-radius: 5px;
            bottom: 30px;
            left: 20px;
            box-shadow: 8px 4px 10px 3px #ccc;
            cursor: pointer;
            font-weight: bold;
        }
        .h_Bbutton:active{
            transform: translateY(2px);
        }
        .h_Bbutton:hover{
            opacity:0.8;
        }
        .h_Bbutton svg path{
            fill: #fffae5;
        }
        .bottom_text{
            position:fixed;
            bottom: 0;
            left: 0;
            background-color: #51f;
            color:#fffae5;
            padding: 3px 5px;
            font-size: 12px;
            border-radius: 3px;
        }
    `
    document.head.appendChild(style);
    button.onclick = verify(stopPause);
    /**
    * 添加静音按钮
    */

    const icon = `<svg t="1647347534277" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="3042" width="32" height="32"><path d="M290.133333 921.6c-3.413333 0-10.24 0-13.653333-3.413333-17.066667-6.826667-23.893333-27.306667-17.066667-44.373334l307.2-699.733333c6.826667-17.066667 23.893333-30.72 40.96-37.546667 17.066667-6.826667 37.546667-3.413333 54.613334 6.826667C757.76 194.56 819.2 296.96 819.2 409.6v201.386667l34.133333 133.12c3.413333 10.24 0 20.48-6.826666 30.72-6.826667 3.413333-17.066667 10.24-27.306667 10.24h-139.946667c-17.066667 78.506667-85.333333 136.533333-167.253333 136.533333-30.72 0-58.026667-6.826667-85.333333-23.893333-17.066667-10.24-20.48-30.72-13.653334-47.786667 10.24-17.066667 30.72-20.48 47.786667-13.653333 17.066667 10.24 34.133333 13.653333 51.2 13.653333 47.786667 0 88.746667-34.133333 98.986667-81.92 6.826667-34.133333 34.133333-54.613333 68.266666-54.613333h95.573334l-23.893334-92.16V409.6c0-85.333333-47.786667-167.253333-122.88-208.213333l-307.2 699.733333c-3.413333 10.24-17.066667 20.48-30.72 20.48zM238.933333 757.76l34.133334-136.533333V409.6c0-119.466667 88.746667-221.866667 208.213333-235.52 17.066667-3.413333 30.72-20.48 30.72-40.96-3.413333-17.066667-20.48-30.72-40.96-30.72C320.853333 122.88 204.8 256 204.8 409.6v201.386667l-34.133333 133.12c-3.413333 17.066667 6.826667 37.546667 23.893333 40.96h6.826667c17.066667 0 34.133333-10.24 37.546666-27.306667z" fill="#3E2AD1" p-id="3043"></path></svg>`
    const muteButton = document.createElement('button');
    muteButton.className = 'h_Bbutton';
    muteButton.innerHTML = icon;
    muteButton.style['left'] = '150px';
    muteButton.style['padding'] = '3px';
    muteButton.style['background'] = 'linear-gradient(45deg, #f50404, #e2ec0a)';

    document.body.appendChild(muteButton);
    muteButton.onclick = verify(handleMute);

    const autoToggleButton = document.createElement('button');
    autoToggleButton.className = 'h_Bbutton';
    autoToggleButton.innerHTML = '自动切换下集';
    Object.assign(autoToggleButton.style, {
        bottom: '80px'
    })
    autoToggleButton.onclick = verify(autoToggleNextVideo);
    document.body.appendChild(autoToggleButton);

    function autoToggleNextVideo() {
        if (!video) {
            video = document.querySelectorAll('iframe')[0].contentWindow.document.querySelectorAll('iframe')[0].contentWindow.document.querySelector('video');
        }
        const curr = document.querySelectorAll('h4.currents')[0]
        if (!curr) return console.warn('获取当前活跃item失败');
        const nextA = curr.parentElement.nextElementSibling.querySelector('a');
        if (!nextA) return;
        video.addEventListener('ended', () => {
            nextA.click();
        });
        autoToggleButton.style.display = 'none';

        const nextVideoText = document.createElement('span');
        nextVideoText.className = 'bottom_text';
        document.body.appendChild(nextVideoText);

        const r = () => {
            nextVideoText.innerText = `下集:${nextA.children[0].innerText}`;
            setTimeout(r, 5000);
        }
        r();

    }

    function verify(callback) {
        return () => {
            try {
                callback();
            } catch (e) {
                console.error('出错!', e);
                alert('确保已经点开视频');
            }
        }
    }

})();