Greasy Fork

Greasy Fork is available in English.

vikacg去广告

仅适用于vikacg的去广告插件

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// ==UserScript==
// @name         vikacg去广告
// @namespace    https://github.com/fuyu2022
// @version      1.0.0
// @description  仅适用于vikacg的去广告插件
// @author       fuyu
// @match        https://www.vikacg.com
// @match        https://www.vikacg.com/*
// @icon         https://www.google.com/s2/favicons?sz=64&domain=vikacg.com
// @grant        none
// @license      MIT
// ==/UserScript==
(function() {
    'use strict';
    var new_style=document.createElement("style");
    document.head.appendChild(new_style);
    var PostCss=`
    /*首页/post*/
    div.card.mb-2[class="card mb-2"],
    div.card.mb-2[class="mb-2 card"],
    div.card[class="card"] > div > a > img,
    .card.my-2[class="card my-2"],
    div.three-column.my-2 > a > img
    {
        display:none;
    }
    `
    var PCss=`
    /*单个文章/p*/
    div.entry-header > div.post-title,
    div.post-title.card.mb-2,
    div.next-comment.card.mb-2
    {
        display:none;
    }
    `
    var CircleCss=`
    /*圈子/circle*/
    div.three-column-middle > div > div.card.mb-2.shadow-blur.blur-material > div.box,
    div.three-column-right > div.right-column-box > div.shadow-blur.blur-material > iframe
    {
        display:none;
    }
    `
    var WalletCss=`
   /*积分管理界面/wallet*/
    div.three-column > div.three-column-middle > div.position-relative.mb-2.card + div,
    div.three-column-middle > div.flex.flex-col > div > iframe
    {
        display:none;
    }
    `
    var ExternalCss=`
    /*外链检查/external*/
    div.container > div.row > div.col-lg-12.mx-auto > div.flex.flex-col.banner
    {
        display:none;
    }
    `
    var ResourcesCss=`
    /*外链检查/resources*/
    #__nuxt > div > div.container.mt-12 > div > div.card.mb-2
    {
        display:none;
    }
    `
    var MessageCss=`
    /*外链检查/message*/
    div.container.chat-windows.mt-12+div > div > a
    {
        display:none;
    }
    `

// 保存原始的 pushState 和 replaceState 方法
const originalPushState = history.pushState;
const originalReplaceState = history.replaceState;

// 扩展 pushState 方法
history.pushState = function (...args) {
    const result = originalPushState.apply(this, args); // 调用原始方法
    window.dispatchEvent(new Event("locationchange")); // 触发自定义事件
    return result;
};

// 扩展 replaceState 方法
history.replaceState = function (...args) {
    const result = originalReplaceState.apply(this, args); // 调用原始方法
    window.dispatchEvent(new Event("locationchange")); // 触发自定义事件
    return result;
};

// 监听 popstate 和自定义的 locationchange 事件
window.addEventListener("popstate", () => {
    window.dispatchEvent(new Event("locationchange")); // 保持统一事件
});


// 路由变化时更新样式
window.addEventListener("locationchange", updateStylesBasedOnRoute);

function updateStylesBasedOnRoute() {
    let cssRules;
    if (window.location.pathname === '/' || window.location.pathname.includes('/post')) {
        cssRules = PostCss; // 直接设置新的样式内容
    }
    else if (window.location.pathname.includes('/p/')) {
        cssRules = PCss;
    }
    else if (window.location.pathname.includes('/circle')) {
        cssRules = CircleCss;
    }
    else if (window.location.pathname.includes('/wallet')) {
        cssRules = WalletCss;
    }
    else if (window.location.pathname.includes('/external')) {
        cssRules = ExternalCss;
    }
    else if (window.location.pathname.includes('/resources') || window.location.pathname.includes('/study') || window.location.pathname.includes('/reads')) {
        cssRules = ResourcesCss;
    }
    else if (window.location.pathname.includes('/message')) {
        cssRules = MessageCss;
    }

    // 使用文本节点更新样式内容
    const textNode = document.createTextNode(cssRules); // 创建文本节点
    new_style.appendChild(textNode); // 将新的文本节点添加到 <style> 元素中
    // 清除除了最后一个节点外的所有节点
    setTimeout(()=>{
        while (new_style.childNodes.length > 1) {
            new_style.removeChild(new_style.firstChild); // 移除除最后一个节点外的所有子节点
        }
    },1000);

}

})();