Greasy Fork

Greasy Fork is available in English.

爱壹帆网站优化器

优化爱壹帆网站体验:自动屏蔽弹窗广告、移除干扰元素、提升浏览体验

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

You will need to install an extension such as Tampermonkey to install this script.

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         爱壹帆网站优化器
// @name:en      IYF Website Optimizer
// @namespace    http://greasyfork.icu/users/your-username
// @version      1.0
// @description  优化爱壹帆网站体验:自动屏蔽弹窗广告、移除干扰元素、提升浏览体验
// @description:en Optimize IYF website experience: automatically block popup ads, remove distracting elements, and improve browsing experience
// @author       YourUsername
// @license      MIT
// @match        *://*.iyf.tv/*
// @match        *://iyf.tv/*
// @grant        none
// @run-at       document-start
// @icon         https://www.google.com/s2/favicons?sz=64&domain=iyf.tv
// @supportURL   https://github.com/your-username/iyf-ads-optimizer/issues
// @homepageURL  https://github.com/your-username/iyf-ads-optimizer
// ==/UserScript==

(function() {
    'use strict';

    // 防止元素弹出的通用函数
    function preventElementPopup(selector) {
        const element = document.querySelector(selector);
        if (element) {
            element.style.display = 'none';
            element.style.visibility = 'hidden';
            element.style.opacity = '0';
            element.style.pointerEvents = 'none';
            element.setAttribute('data-blocked', 'true');
        }
    }

    // 移除元素的通用函数
    function removeElement(selector) {
        const elements = document.querySelectorAll(selector);
        elements.forEach(element => {
            element.remove();
        });
    }

    // 处理 vg-pause-f 标签元素
    function handleVgPauseF() {
        // 查找所有带有 vg-pause-f 类的元素
        const vgPauseElements = document.querySelectorAll('.vg-pause-f');
        vgPauseElements.forEach(element => {
            // 阻止点击事件
            element.addEventListener('click', function(e) {
                e.preventDefault();
                e.stopPropagation();
                return false;
            }, true);

            // 阻止右键菜单
            element.addEventListener('contextmenu', function(e) {
                e.preventDefault();
                return false;
            }, true);

            // 设置样式使其不可见且不可交互
            element.style.display = 'none';
            element.style.visibility = 'hidden';
            element.style.pointerEvents = 'none';
        });
    }

    // 处理 ps pggf 类的div
    function handlePsPggf() {
        removeElement('.ps.pggf');
    }

    // 处理 publicbox ng-star-inserted 元素
    function handlePublicBox() {
        preventElementPopup('.publicbox.ng-star-inserted');

        // 同时移除所有匹配的元素
        removeElement('.publicbox.ng-star-inserted');
    }

    // 主要处理函数
    function optimizeWebsite() {
        console.log('爱壹帆网站优化器运行中...');

        // 处理各种元素
        handleVgPauseF();
        handlePsPggf();
        handlePublicBox();
    }

    // 使用 MutationObserver 监听DOM变化
    const observer = new MutationObserver(function(mutations) {
        mutations.forEach(function(mutation) {
            if (mutation.type === 'childList') {
                // 当有新元素添加时,重新运行优化
                optimizeWebsite();
            }
        });
    });

    // 配置观察选项
    const observerConfig = {
        childList: true,
        subtree: true,
        attributes: true,
        attributeFilter: ['class', 'style']
    };

    // 开始观察整个文档
    observer.observe(document.body, observerConfig);

    // 页面加载完成后立即运行
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', optimizeWebsite);
    } else {
        optimizeWebsite();
    }

    // 定期检查(作为备用机制)
    setInterval(optimizeWebsite, 2000);

    // 添加CSS样式来全局屏蔽这些元素
    const style = document.createElement('style');
    style.textContent = `
        .vg-pause-f {
            display: none !important;
            visibility: hidden !important;
            opacity: 0 !important;
            pointer-events: none !important;
            position: absolute !important;
            left: -9999px !important;
            top: -9999px !important;
        }

        .ps.pggf {
            display: none !important;
            visibility: hidden !important;
            opacity: 0 !important;
            pointer-events: none !important;
        }

        .publicbox.ng-star-inserted {
            display: none !important;
            visibility: hidden !important;
            opacity: 0 !important;
            pointer-events: none !important;
            z-index: -9999 !important;
        }

        /* 阻止所有可能的弹窗相关样式 */
        [class*="popup"], [class*="modal"], [class*="dialog"], [class*="overlay"] {
            display: none !important;
            visibility: hidden !important;
        }
    `;
    document.head.appendChild(style);

    console.log('爱壹帆网站优化器已启动');
})();