becoder

2024/1/23 15:25:23

目前为 2024-10-06 提交的版本。查看 最新版本

// ==UserScript==
// @name        becoder
// @namespace   Violentmonkey Scripts
// @match       https://www.becoder.com.cn/*
// @grant       none
// @version     1.3
// @author      EarthMessenger
// @description 2024/1/23 15:25:23
// @license MIT
// ==/UserScript==

(() => {

  const fixRightClick = () => {
    window.oncontextmenu = null;
    document.oncontextmenu = null;
  };

  const fixPDF = () => {
    const iframes = document.querySelectorAll('iframe');
    const pat = /https:\/\/www\.becoder\.com\.cn\/js\/pdf\/web\/viewer\.html\?file=(\S*)/gm;
    for (const oldPdf of iframes) {
      const res = pat.exec(oldPdf.src);
      if (res == null) continue;
      const url = res[1];
      fetch(url)
        .then((resp) => resp.blob())
        .then((blob) => blob.slice(0, blob.size, "application/pdf"))
        .then((blob) => {
          const newPdf = document.createElement("iframe");
          newPdf.src = URL.createObjectURL(blob);
          newPdf.width = oldPdf.width;
          newPdf.height = oldPdf.height;
          const parent = oldPdf.parentNode;
          parent.replaceChild(newPdf, oldPdf);
        });
    }
  };

  const fixMenu = () => {
    const logoItem = document.querySelector('body > div.menu > div.ui.container :first-child ');
    logoItem.style.height = '47px'; // 我也不知道爲什麼
  };

  const fixHomePage = () => {
    if (window.location.pathname !== '/index') return ;
    fixMenu();

    const mainDiv = document.querySelector('div.main > div');
    mainDiv.children[0].classList.replace('eleven', 'sixteen');

    mainDiv.removeChild(mainDiv.children[1]); // 右欄

    const column = mainDiv.children[0];
    column.removeChild(column.children[4]); // 提交次數統計圖
    column.removeChild(column.children[0]); // AI 頭圖
  };

  fixRightClick();
  fixPDF();
  fixHomePage();

})();