百度题库去除答案遮挡

去除【百度题库】页面“查看答案”中对“查看答案与解析”的遮挡,去除会员广告

目前為 2023-05-07 提交的版本,檢視 最新版本

// ==UserScript==
// @name         百度题库去除答案遮挡
// @namespace    http://tampermonkey.net/
// @version      0.1.5
// @description  去除【百度题库】页面“查看答案”中对“查看答案与解析”的遮挡,去除会员广告
// @author       Albresky
// @license      GPL v3
// @match        *://easylearn.baidu.com/edu-page/*
// @icon         https://www.baidu.com/favicon.ico
// @grant        GM_registerMenuCommand
// @grant        GM_unregisterMenuCommand
// @grant        GM_setValue
// @grant        GM_getValue
// @run-at document-end
// ==/UserScript==

(function () {
  "use strict";
  const log_prefix = "[BDWK] ";

  const maskClass = ".mask";
  const tiganClass = ".tigan";
  const vipbannerClass = ".vip-banner-cont";
  const checkInterval = 100; // ms

  let menu_ALL = [
    ["menu_el_disable_shijuan", "移除[本题试卷]", ".shijuan-cont", true],
    ["menu_el_disable_shijuan_source", "移除[本题试卷来源]", ".right", true],
    ["menu_el_disable_video", "移除[视频解析]", ".question-video-cont", true]
  ];
  let menu_ID = [];

  let vipContentClasses = [
    ".feedback-icon",
    ".kaixue-dialog-mask",
    ".kaixuebanner",
  ];
  let vipContentDiv = [];

  window.addEventListener("scroll", fuckScroll);

  initMenu();

  fuck();

  function log(msg) {
    console.log(log_prefix + msg);
  }

  function initMenu() {
    for (let i = 0; i < menu_ALL.length; i++) {
      if (GM_getValue(menu_ALL[i][0]) == null) {
        GM_setValue(menu_ALL[i][0], menu_ALL[i][3]);
      }
    }
    registerMenuCommand();
  }

  function registerMenuCommand() {
    if (menu_ID.length > menu_ALL.length) {
      // 如果菜单ID数组多于菜单数组,说明不是首次添加菜单,需要卸载所有脚本菜单
      for (let i = 0; i < menu_ID.length; i++) {
        GM_unregisterMenuCommand(menu_ID[i]);
      }
    }
    for (let i = 0; i < menu_ALL.length; i++) {
      // 循环注册(不可用)脚本菜单
      menu_ALL[i][3] = GM_getValue(menu_ALL[i][0]);
      menu_ID[i] = GM_registerMenuCommand(
        `${menu_ALL[i][3] ? "✅" : "❎"} ${menu_ALL[i][1]}`,
        function () {
          menu_switch(
            `${menu_ALL[i][0]}`,
            `${menu_ALL[i][1]}`,
            `${menu_ALL[i][3]}`
          );
        }
      );
    }
  }

  //切换选项
  function menu_switch(kname, name, value) {
    if (value == "false") {
      log(name + "=" + kname);
      GM_setValue(`${kname}`, true);
      registerMenuCommand(); // 重新注册(不可用)脚本菜单
      location.reload(); // 刷新网页
    } else {
      log(name + "=" + kname);
      GM_setValue(`${kname}`, false);
      registerMenuCommand(); // 重新注册(不可用)脚本菜单
      location.reload(); // 刷新网页
    }
    registerMenuCommand(); // 重新注册(不可用)脚本菜单
  }

  function rmMask() {
    let t = setInterval(function () {
      let mask = document.querySelectorAll(maskClass);
      let tigan = document.querySelector(tiganClass);
      getVipContent();
      if (tigan && mask) {
        log("show full tigan");
        tigan.classList.add("tigan-auto");
        log("mask found");
        for (let m of mask) {
          log(m.className + " removed.");
          m.remove();
        }
        rmVipContent();
        clearInterval(t);
      }
    }, checkInterval);
  }

  function fuck() {
    // remove content of menu-items enabled
    for (let i = 0; i < menu_ALL.length; i++) {
      if (menu_ALL[i][3]) {
        rmCont(menu_ALL[i][2]);
      }
    }

    rmMask();
  }

  function rmCont(contClass) {
    let _timer = setInterval(() => {
      let contDiv = document.querySelector(contClass);
      if (contDiv) {
        log(contDiv.className + " removed.");
        contDiv.remove();
        clearInterval(_timer);
      }
    }, checkInterval);
  }

  function getVipContent() {
    for (let c of vipContentClasses) {
      let vipContent = document.querySelector(c);
      if (vipContent) {
        vipContentDiv.push(vipContent);
        vipContentClasses.filter((item) => item != vipContent);
      }
    }
  }

  function rmVipContent() {
    for (let div of vipContentDiv) {
      if (div) {
        div.remove();
        log(div.className + " removed");
      }
    }
  }

  function fuckScroll() {
    var t = document.documentElement.scrollTop || document.body.scrollTop;
    if (t > 0) {
      rmCont(vipbannerClass);
    }
  }
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址