轻轻敲醒沉睡的心灵

存个档。我当然知道它们都是引用,但是感觉这么写好爽啊。

总之就是还有什么需要的功能可以考虑线下告诉我(?)

// ==UserScript==
// @name         BECODER Helper
// @namespace    http://tampermonkey.net/
// @version      1.0.7
// @description  Make BECODER easier to use :-(
// @author       XSC062
// @match        https://becoder.com.cn/*
// @match        https://www.becoder.com.cn/*
// @match        http://222.180.160.110:61234/*
// @match        http://222.180.160.110:61235/*
// @icon         http://222.180.160.110:61235/logo/login_logo.png
// @grant        none
// ==/UserScript==

(function() {
    'use strict';
    var nowURL = window.location.href;
    var baseURL = window.location.protocol + '//' + nowURL.split('/')[2] + '/';
    // 优化用户未登录页

    if (document.getElementsByClassName('ui negative icon message').length > 0) {
        // <a href="/login?url=%2Fdiscussion%2Fglobal" style="margin-right: 5px; ">登录</a>
    }
    /* 修复过时 pdf + 去水印(暂时不会写,这玩意儿为啥 cross-origin 了啊???) */
    Array.from(document.getElementsByTagName("IFRAME")).forEach((i) => {
        i.src = i.src.replace(/https:\/\/www.becoder.com.cn\//g, baseURL);
        i.src = i.src.replace(/https:\/\/becoder.com.cn\//g, baseURL);
        i.src = i.src.replace(/http:\/\/222.180.160.110\:1024\//g, baseURL);
        i.src = i.src.replace(/http:\/\/222.180.160.110\:61234\//g, baseURL);
        i.src = i.src.replace(/http:\/\/222.180.160.110\:61235\//g, baseURL);
        Array.from(i.contentWindow.document.getElementsByClassName('cover')).forEach((p) => { p.style="visible: false;"; });
    });
    if (nowURL.search('contest') != -1) {
        if (document.URL.search(/contest\/[0-9]+$/) != -1) {
            // 增加个人提交按钮,查看自己在比赛中所有提交记录
            var lableList = document.getElementsByClassName('ui buttons')[0]; // 这里偷懒了,但经查验没什么问题
            lableList.appendChild(document.createElement('A')).innerHTML = "个人提交";
            lableList.lastElementChild.className = "ui small blue button"; // 问就是我喜欢蓝色
            lableList.lastElementChild.href = document.URL + "/submissions"; // 又偷懒了,因为不会
            // 比赛界面提交链接去除 contest,对权限的适配以后再优化
            Array.from(document.getElementsByTagName('TR')).forEach((i) => {
                if (i.firstElementChild.firstElementChild == null) {
                    return;
                }
                i.firstElementChild.firstElementChild.href = i.firstElementChild.firstElementChild.href.replaceAll('/contest', '');
            });
        }
        // 比赛提交记录页面点击跳转,超链接颜色不管了,反正蓝的也方便识别
        else if (document.URL.search('submission') > document.URL.search('contest')) {
            Array.from(document.getElementsByTagName('TR')).forEach((k, id) => {
                if (id == 0) {
                    return;
                }
                var submissionIndex = k.getElementsByTagName('B')[0].innerHTML;
                var nowHref = baseURL + 'submission/' + submissionIndex.substr(1, submissionIndex.length - 1);
                var elementA = k.getElementsByTagName('TD')[0], elementB = k.getElementsByTagName('TD')[2];
                var sonA = k.getElementsByTagName('B')[0], sonB = k.getElementsByTagName('B')[2];
                elementA.appendChild(document.createElement('A')).append(sonA);
                elementB.appendChild(document.createElement('A')).append(sonB);
                elementA.firstElementChild.href = elementB.firstElementChild.href = nowHref;
            });
        }
    }
})();

  • 20240216 v1.0.1:增加了个人提交按钮。感谢这个页面还在。
  • 20240225 v1.0.2:为了 @liuzimingc 专门适配了一下 becoder.com.cn 域名 😄
  • 20240406 v1.0.3:修了比赛全局提交 <a> 标签冲突的 bug。
  • 20241008 v1.0.4:加了修复远古 pdf 的功能,修了点屎山。
  • 20241018 v1.0.5:加了修复并不远古 pdf 的功能。
  • 20241029 v1.0.6:适配了 61235。
posted @ 2024-02-15 19:36  XSC062  阅读(102)  评论(6编辑  收藏  举报