智慧教育培训管理平台刷课脚本

该油猴脚本用于 智慧教育培训管理平台 的辅助看课,脚本功能如下:检测到视频滑块认证后自动刷新页面

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         智慧教育培训管理平台刷课脚本
// @namespace    https://docs.scriptcat.org/
// @version      1.0
// @description  该油猴脚本用于 智慧教育培训管理平台 的辅助看课,脚本功能如下:检测到视频滑块认证后自动刷新页面
// @author       脚本喵
// @match        https://wlpx.nmgdata.org.cn/*
// @grant        none
// @icon         https://jiaobenmiao.com/img/logo2.jpg
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    setInterval(function () {
        var ele = document.querySelector(".captcha-container")
        if (ele && isElementVisible(ele)) {
            location.reload()
        }
    }, 5000)

    function isElementVisible(element) {
        // 首先检查传入的参数是否为Element对象
        if (!(element instanceof Element)) {
            console.error('The provided parameter is not an Element.');
            return false;
        }

        // 检查元素是否在DOM中
        if (!document.body.contains(element)) {
            return false;
        }

        // 获取元素的计算样式
        var style = window.getComputedStyle(element);

        // 检查元素的visibility属性
        if (style.visibility === 'hidden') {
            return false;
        }

        // 检查元素的opacity属性
        if (style.opacity === '0') {
            return false;
        }

        // 检查元素的尺寸
        if (element.offsetWidth === 0 || element.offsetHeight === 0) {
            return false;
        }

        // 获取元素的位置和尺寸
        var rect = element.getBoundingClientRect();
        if (rect.width === 0 || rect.height === 0) {
            return false;
        }

        // 检查元素是否在视口内
        if (rect.right < 0 || rect.bottom < 0 || rect.left > window.innerWidth || rect.top > window.innerHeight) {
            return false;
        }

        // 检查元素是否被其他元素遮挡
        while ((element = element.parentNode) && !document.body.contains(element)) {
            if (style['overflow'] === 'hidden') {
                var parentRect = element.getBoundingClientRect();
                if (rect.right < parentRect.left || rect.left > parentRect.right || rect.bottom < parentRect.top || rect.top > parentRect.bottom) {
                    return false;
                }
            }
        }

        // 如果所有检查都通过了,那么元素是可见的
        return true;
    }
})();