Greasy Fork

Greasy Fork is available in English.

移除超星学习通课程页面的鼠标检测

自动删除页面上所有mouseout事件侦听器

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         移除超星学习通课程页面的鼠标检测
// @namespace    Ladland
// @version      1.0
// @description  自动删除页面上所有mouseout事件侦听器
// @author       Ladland
// @match        *://mooc1.chaoxing.com/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';

    // 重写EventTarget的addEventListener方法
    const originalAddEventListener = EventTarget.prototype.addEventListener;
    EventTarget.prototype.addEventListener = function(type, listener, options) {
        if (type === 'mouseout') {
            console.log('阻止mouseout事件侦听器添加:', listener);
            // 不执行添加mouseout事件侦听器的操作
            return;
        }
        return originalAddEventListener.call(this, type, listener, options);
    };

    // 重写EventTarget的removeEventListener方法
    const originalRemoveEventListener = EventTarget.prototype.removeEventListener;
    EventTarget.prototype.removeEventListener = function(type, listener, options) {
        if (type === 'mouseout') {
            console.log('阻止mouseout事件侦听器移除:', listener);
            // 不执行移除mouseout事件侦听器的操作
            return;
        }
        return originalRemoveEventListener.call(this, type, listener, options);
    };

    // 获取页面上所有元素
    const elements = document.querySelectorAll('*');
    // 遍历元素,移除mouseout事件侦听器
    elements.forEach(element => {
        const listeners = getEventListeners(element).mouseout;
        if (listeners) {
            listeners.forEach(listener => {
                element.removeEventListener('mouseout', listener.listener);
            });
        }
    });
})();